将JSF 1.2 inputtext传递给会话bean中的方法

时间:2014-12-20 01:20:19

标签: jsf jsf-1.2 mojarra session-bean

我正在学习JSF 1.2,我有一个视图&#34; profile.jsf&#34;使用请求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在我使用的两种配置中都不起作用(空值)。

0 个答案:

没有答案