2015-10-30 2 views
0

Я хочу обновить свойство bean из того же jsf wo, которое содержит это свойство bean, получая новое значение из метода внутри этого компонента.обновить свойство bean из того же jsf

вот 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> 

здесь метод компонента:

//validate login 
public String validateUsernamePassword() { 
... 
    this.user = "admin"; 
... 

} 

я хочу вернуться к тому же JSF и заполнить поле пользователя новым значением.

ответ

4

Если вы хотите остановиться на этой же странице, то вам не обязательно возвращать String, просто создайте метод void. Если вы хотите обновить поля после отправки формы вы можете сделать это в JSF компонента по AJAX с render атрибута и указать эти поля с ID или селекционерами, как @form:

<h:commandButton action="#{login.validateUsernamePassword}" value="Login"> 
    <f:ajax execute="formId" render="username otherComponentId"/> 
</h:commandButton> 

или обновление от каркасного боба:

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

} 

Лучше всего использовать атрибут render, и, возможно, вы также хотели бы обновить h:message для любых возникших ошибок (укажите его ID и обновите его в render).

Смежные вопросы