从相同的jsf更新bean属性

从相同的jsf更新bean属性,jsf,Jsf,我想通过从这个bean中的一个方法获取新值,从包含这个bean属性的同一个jsf wo更新一个bean属性 以下是jsf示例: <h3>JSF Login Logout</h3> <h:outputText value="Username" /> <h:inputText id="username" value="#{login.user}"></h:inputText> <h:outputText value="

我想通过从这个bean中的一个方法获取新值,从包含这个bean属性的同一个jsf wo更新一个bean属性

以下是jsf示例:

<h3>JSF Login Logout</h3>
    <h:outputText value="Username" />
    <h:inputText id="username" value="#{login.user}"></h:inputText>
<h:outputText value="Password" />
    <h:inputSecret id="password" value="#{login.pwd}"></h:inputSecret>
    <h:message for="password"></h:message>
    <br /><br />

    <h:commandButton action="#{login.validateUsernamePassword}"
        value="Login"></h:commandButton>

我希望返回到同一个jsf并用新值填充用户字段。

如果您想保持在同一页面上,那么您不必返回
字符串
,只需创建
void
方法。如果您想在表单提交后更新字段,您可以在JSF组件中使用带有
render
属性的ajax进行更新,并使用ID或类似
@form
的选择器指定这些字段:

<h:commandButton action="#{login.validateUsernamePassword}" value="Login">
    <f:ajax execute="formId" render="username otherComponentId"/>
</h:commandButton>
更好的选择是使用
render
属性,并且您可能还希望更新
h:message
,以查找任何发生的错误(为其提供ID并在
render
中更新它)


如果您想停留在同一页面上,那么您不必返回
字符串
,只需创建
void
方法即可。如果您想在表单提交后更新字段,您可以在JSF组件中使用带有
render
属性的ajax进行更新,并使用ID或类似
@form
的选择器指定这些字段:

<h:commandButton action="#{login.validateUsernamePassword}" value="Login">
    <f:ajax execute="formId" render="username otherComponentId"/>
</h:commandButton>
更好的选择是使用
render
属性,并且您可能还希望更新
h:message
,以查找任何发生的错误(为其提供ID并在
render
中更新它)

public String validateUsernamePassword() {
...
    this.user = "admin";
    RequestContext.getCurrentInstance().update("formId:username"); //PrimeFaces solution since you have PrimeFaces tag on your question
...

}