PrimeFaces commandButton ajax不起作用
我有简单的JSF页面和简单的支持bean。我在页面上有p:commandButton和p:datatable。使用commandButton,我需要用ajax更新dataTable,但这不会发生。原因可能是什么 以下是网页:PrimeFaces commandButton ajax不起作用,ajax,primefaces,Ajax,Primefaces,我有简单的JSF页面和简单的支持bean。我在页面上有p:commandButton和p:datatable。使用commandButton,我需要用ajax更新dataTable,但这不会发生。原因可能是什么 以下是网页: <ui:define name="content"> <h2>#{menu['management.roles.perms']}</h2> <h:form id="form">
<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>
#{menu['management.roles.perms']}
下面是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;
}
}
@ViewScoped
@ManagedBean(name=“rolesBean”)
公共类RolesViewBean扩展了BasicViewBean{
私有静态最终长serialVersionUID=27377603187254821L;
@注入
罗乐道道;
私有列表角色;
@凌驾
受保护的基本dao getDAO(){
返回道;
}
public void onEdit(RowEditEvent事件){
this.entity=(角色)event.getObject();
dao.update(this.entity);
}
public void addRole(){
添加(新角色());
}
公共列表getRoles(){
roles=dao.getRoleList();
返回角色;
}
public void setRoles(列出角色){
this.roles=角色;
}
}
乍一看,问题在于addRole方法修改了“角色”列表,而getRoles(由dataTable调用)将其重置为数据库中保存的任何内容。
所以你的数据表被更新了,只是它被更新为相同的值
想想看;) 你说得对!tnx寻求帮助,但现在还有另一个问题。按下按钮时未执行addRole方法。可能是什么?