我正在学习JSF 1.2,我有一个视图" profile.jsf"使用请求bean BeanProfile
呈现。 bean&#34; BeanProfile&#34;是一个请求bean,因为我需要在每个请求中更新数据并刷新视图。该视图有<h:commandButton/>
触发会话bean LoginBean
中的方法,并且应该在持久化之前更新用户配置文件。所以,我需要将配置文件视图中的所有信息传递给会话bean中的方法。我尝试使用<f:attribute/>
中的<h:commandButton/>
,如下所示:
<h:commandButton id="submit" actionListener="#{beanLogin.updateUser}" value="Update">
<f:attribute name="ttt" value="789"/> <!-- just for debug -->
<f:attribute name="name" value="#{name}" /> <!-- I will pass just that one for the moment -->
</h:commandButton>
和组件:
<h:inputText id="name"
binding="#{name}"
value="#{beanProfile.name}"
required="true" />
在我的方法中我有:
public void updateUser(ActionEvent event) {
/*Debug*/
System.err.println("size: "+event.getComponent().getAttributes().size());
System.err.println("--"+(String) event.getComponent().getAttributes()
.get("ttt")+"--");;
UIInput input = (UIInput) event.getComponent().getAttributes().get("name");
String text = (String) input.getSubmittedValue();
System.err.println("++"+text+"++");
}
结果我得到了:
2014-12-20T01:43:25.850+0100|Severe: size: 1
2014-12-20T01:43:25.850+0100|Severe: --789--
java.lang.NullPointerException ...
所以我传递了2个参数,我在会话bean的方法中只有一个参数,而这是导致java.lang.NullPointerException
的原因。我不知道自己做错了什么。我使用动态Web模块3.0和GlassFish Server Open Source Edition 4.1(包括Mojarra 2.2.7)在Eclipse 4.4.1 SR1中工作。
更新
我使用tomcat 8.0.15,MyFaces 1.2.12和JSTL 1.2尝试了相同的代码,我已经在GlassFish和Mojarra中使用了它。我有同样的问题,我发现bean注入认为faces-config.xml中的managed-property
在我使用的两种配置中都不起作用(空值)。