2012-12-10 3 views
0

저는 간단한 JSF 페이지와 간단한 backing bean을 가지고 있습니다. 나는 p : commandButton을 페이지에, p : datatable을 가지고있다. commandButton을 사용하면 dataTable을 ajax로 업데이트해야하지만 발생하지는 않습니다. 그 이유는 무엇일까요? 여기 PrimeFaces commandButton ajax가 작동하지 않습니다.

은 페이지입니다 :

<ui:define name="content"> 
     <h2>#{menu['management.roles.perms']}</h2> 

     <h:form id="form"> 
      <p:fieldset style="border: 0px" toggleable="false" collapsed="false"> 
       <p:tabView> 
        <p:tab title="#{messages['roles']}"> 
         <p:dataTable id="dataTable" value="#{rolesBean.roles}" var="role" 
             editable="true" rows="10" rowKey="#{role.id}"> 

          <p:ajax event="rowEdit" listener="#{rolesBean.onEdit}"/> 
          <f:facet name="footer"> 
           <p:commandButton value="#{misc['add.role']}" 
                actionListener="#{rolesBean.addRole}" update="dataTable"/> 
          </f:facet> 
          <p:column headerText="#{misc['name.database']}"> 
           <p:cellEditor> 
            <f:facet name="output"> 
             <h:outputText value="#{role.name}"/> 
            </f:facet> 
            <f:facet name="input"> 
             <h:inputText value="#{role.name}"/> 
            </f:facet> 
           </p:cellEditor> 
          </p:column> 

          <p:column headerText="#{misc['date']}"> 
           <f:facet name="output"> 
            <h:outputText value="#{role.creationDate}"> 
             <f:convertDateTime pattern="dd.MM.yyyy" /> 
            </h:outputText> 
           </f:facet> 
          </p:column> 

          <p:column headerText="#{misc['description']}"> 
           <p:cellEditor> 
            <f:facet name="output"> 
             <h:outputText value="#{role.description}"/> 
            </f:facet> 
            <f:facet name="input"> 
             <h:inputText value="#{role.description}"/> 
            </f:facet> 
           </p:cellEditor> 
          </p:column> 

          <p:column headerText="#{messages['edit']}"> 
           <p:rowEditor /> 
          </p:column> 
         </p:dataTable> 
        </p:tab> 

        <p:tab title="#{messages['perms']}"> 

        </p:tab> 

        <p:tab title="#{clients['history']}"> 
        </p:tab> 
       </p:tabView> 
      </p:fieldset> 
     </h:form> 
    </ui:define> 

그리고 여기에 backingBean의 코드입니다 :

언뜻
@ViewScoped 
@ManagedBean(name = "rolesBean") 
public class RolesViewBean extends BasicViewBean<Role> { 

    private static final long serialVersionUID = 27377603187254821L; 
    @Inject 
    RoleDao dao; 
    private List<Role> roles; 

    @Override 
    protected BasicDao<Role> getDAO() { 
     return dao; 
    } 

    public void onEdit(RowEditEvent event){ 
     this.entity = (Role) event.getObject(); 
     dao.update(this.entity); 
    } 

    public void addRole(){ 
     roles.add(new Role()); 
    } 

    public List<Role> getRoles() { 
     roles = dao.getRoleList(); 
     return roles; 
    } 

    public void setRoles(List<Role> roles) { 
     this.roles = roles; 
    } 
} 

답변

0

, 문제가있는 동안, 당신의 addRole 방법은 "역할"목록을 modifes이다 getRoles (dataTable에 의해 호출 됨)는 데이터베이스에 저장된 내용으로 재설정합니다. 데이터 테이블이 업데이트되면 동일한 값으로 업데이트됩니다.

생각해보십시오.)

+0

네가 맞아! tnx에 도움을 요청했지만 이제는 또 다른 문제가 있습니다. 버튼을 누르고있는 동안 addRole 메서드가 실행되지 않습니다. 그것은 무엇 일 수 있 었는가? –

관련 문제