JSF формы отредактированные значения не отражены в управляемом бине - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь редактировать заполненную форму, но она отправляет старые значения в managedBean только после нажатия кнопки Command.

Быстрый обзор концепции:

у меня есть для каждого столбца поле outputText и inputText всякий раз, когда я нажимаю на кнопку edit, я отправляю идентификатор строки в управляемый компонент с именем EditBean и сохраняю идентификатор строки, если идентификатор в компоненте совпадает с идентификаторомв строке будет отображен inputText, иначе будет выведен outputText, теперь, когда я изменяю значения в полях inputText, строка обновляется старыми значениями!

Страница JSF:

<h:form id="form">

    <h:dataTable value ="#{profil.getProfils()}" var ="profil" class="table table-dark">

   <h:column>                   
      <f:facet name = "header">Login</f:facet>                  
      <h:inputText value = "#{profil.login}" id="login" size = "10" rendered = "#{edit.id eq 
       profil.login}" class="form-control"/>
      <h:outputText value = "#{profil.login}" rendered = "#{edit.id ne profil.login}" />
   </h:column>
    <h:column>
           <f:facet name ="header">Edit</f:facet>
            <h:commandButton id="edit" value="Edit" action="#{edit.setId(profil.login)}"
            rendered ="#{edit.id ne profil.login}" class="btn btn-primary">
             <f:ajax execute="@form" render="@form" />   
            </h:commandButton>
            <h:commandButton id="save" value ="Save" 
              action="#{profil.updateProfil()}"
              rendered = "#{edit.id eq profil.login}" class="btn btn-primary" > 
            </h:commandButton>

      </h:column>
  </h:dataTable>

 </h:form>

ProfilBean:

@Entity
@Table(name="profil")
@ManagedBean(name="profil")
public class Profil implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    private String login;

 public String updateProfil() {

    ProfilDao dao = new ProfilDao();
    dao.updateProfile(this);
    EditBean eb = new EditBean();
    eb.setId(null);
    return "saved";

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...