-1

我正在使用 netbeans 7.2.1 作为 IDE。我正在尝试开发一个基于 JSF 框架并在 GLASSFISH3+ 服务器上运行的具有各种用户配置文件的多问题选择 Web 应用程序,并且在引入第四个托管 bean 时遇到了问题。所以我对另一个项目进行了测试,使用了 4 个具有相同代码的托管 bean,并具有一个简单的字符串属性。测试豆,测试2豆,测试3豆,测试4豆。这是示例代码:


import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped;
@ManagedBean 
@SessionScoped 
public class test3Bean implements java.io.Serializable {
private String s;
public String getS() { 
return s; 
} 
public void setS(String s) {
this.s = s; 
}
} 

Web 应用程序有一个简单的 index.xhtml 读取 4 输入设置为 4 托管 bean:index.xhtml


输入 testword 1 h:inputText value="#{test1.S}
Enter testword 2 h:inputText value="#{test2.S}
Enter testword 3 h:inputText value="#{test3.S}
Enter testword 4 h: inputText value="#{test4.S}

   A submit button

reponse.xhtml 将显示 4 个输入。

运行应用程序时,出现了undex.xhtml,并且在我在 h:inputText 上输入单词并提交后,我遇到了这个错误:

/index.xhtml @14,107 value="#{test4.s}":目标无法到达,标识符“test4”解析为空。

我不明白相同的代码 testBean 1,2 和 3 已由 Mojarra/faclets 引擎处理,而不是 test4Bean。

请有任何想法。

4

1 回答 1

1

您的代码有些混乱。首先,您应该将所有类名的第一个字母大写:

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped;
@ManagedBean 
@SessionScoped 
public class Test3Bean implements java.io.Serializable {
  ..
}

必须使用标识符从您的视图中调用此 bean test3Bean(注意第一个字母现在是小写的)。bean 属性也必须是小写的。

有了这个,JSF 中的正确输入字段将如下所示:

<h:inputText value="#{test3Bean.s} />

根据这些建议更改您的代码,然后重试。

于 2013-03-06T11:14:20.910 回答