2011-07-07 36 views
0

我有一个奇怪的问题,或者我认为它很奇怪。所有的 首先,这些都是代码:JSP Bean只适用于我更改

public class Bean implements Serializable { 
    private String adSoyad; 

    public void setAdSoyad (String adSoyad) { 
     this.adSoyad = adSoyad; 
    } 

    public String getAdSoyad() { 
     return adSoyad; 
    } 
} 

我useBean的:

<jsp:useBean id="isimBean" class="Bean" scope="session"> 
    <jsp:setProperty name="isimBean" property="adSoyad" value="<%=adsoyad%>" /> 
</jsp:useBean> 

除了豆,我控制了会议,并登录

我一直认为来自于形式的资讯像这样

在处理表单的页面中,有bean的getAdSoday方法。

当我测试表单时,getAdsoyad方法给了我null。但是,我改变了Bean类中的一些内容并保存,当我重新加载页面时(我只碰到f5,我没有输入新数据)getAdsoyad给了我一个结果。

我重新填写表单没有任何改变,它不起作用,但是当我改变了一些东西的时候,它就起作用了。

通过改变一些东西,我的意思是让字母大写等,或者改变方法名称中的get和set变量。

总之,它似乎只在我编译bean.java时才起作用。

可能是什么问题?

此外,使用get和set方法名称,允许useBean属性有什么不同?如果属性是aa,set set方法是否会成为问题?

对不起的语言,我尽我所能解释它,我希望你们明白这一点。 在此先感谢。我想,我的代码并不是不正确的。据我所知,bean保存了我发送的信息。我只发送名字和姓氏信息(name = ad,Soyad = surname,adSoyad和nameSurname是一样的)

我的问题是,bean不保存nameSurname变量。但是当我更改bean.java的一行时,bean正常工作。然后我关闭了页面,然后打开,bean不再工作。但是我将nameSurname改为NameSurname,bean正常工作! 我认为,bean类只在重新编译时才起作用。

+0

解决。 我的问题是,setProperty不应该在useBean标记中。正确使用Bean代码如下: 'code' “/> – Maozturk

回答

0

首先,你的问题不清楚,如果你找到了解决问题的办法,你应该将其作为答案并接受。

提醒的是,这里谈到的一些信息:

JSP 2.2规范页面96和97所指出

(步骤6) 如果在指定的范围中没有找到对象,并且类指定名称是一个定义公共无参数构造函数的非抽象类,那么该类将被实例化。新对象引用与脚本变量以及指定范围中的指定名称使用适当的依赖于范围的关联机制(请参阅PageContext)相关联。之后,执行步骤8。 ..

(步骤8)如果jsp:useBean操作具有非空的主体,则会处理正文。该变量已初始化并在本体范围内可用。身体的文本被视为与其他地方一样。任何模板文本都会传递给出站流。脚本和动作标签将被评估。非空体的常见用法是完成初始化创建的实例。在这种情况下,主体可能会包含jsp:setProperty操作和被评估的脚本。这完成了这个useBean动作的处理。

这就告诉我们,如果Bean类的NO情况下,useBean标签将实例为你一个Bean,并且将执行内部setProperty标签的属性设置为某个值。

您的第一个问题是您正在使用的Bean类缺少无参数构造函数 ,因此未能遵守JavaBean标准。