Jsf 重新加载不';不适用于a4j:commandLink标签
我有一个richfaces项目,一件看似简单的事情不想成功:( 查看代码:Jsf 重新加载不';不适用于a4j:commandLink标签,jsf,richfaces,ajax4jsf,Jsf,Richfaces,Ajax4jsf,我有一个richfaces项目,一件看似简单的事情不想成功:( 查看代码: <rich:panel header="Admin home" id="panel"> <h:form> <rich:dataTable id="userlisttable" value="#{adminBean.userList}" var="user" style="width:100%"&g
<rich:panel header="Admin home" id="panel">
<h:form>
<rich:dataTable id="userlisttable" value="#{adminBean.userList}"
var="user" style="width:100%">
<rich:column id="banDate" headerClass="dataTableHeader"
label="Ban date" sortable="true" sortBy="#{user.banDate}"
sortIconAscending="dataTableAscIcon"
sortIconDescending="dataTableDescIcon">
<f:facet name="header">
<h:outputText value="Ban Date" />
</f:facet>
<h:outputText value="#{user.banDate}" />
</rich:column>
<rich:column id="actions" headerClass="dataTableHeader"
label="Actions" sortable="false">
<f:facet name="header">
<h:outputText value="Actions" />
</f:facet>
<h:panelGrid columns="4">
<h:outputText value="Ban user for" />
<a4j:commandLink action="#{adminBean.banUser}" value="One week"
style="font-size:16px" reRender="banDate" immediate="true">
<f:setPropertyActionListener target="#{adminBean.user}"
value="#{user}" />
</a4j:commandLink>
</h:panelGrid>
</rich:column>
</rich:dataTable>
</h:form>
</rich:panel>
它的行为非常奇怪:操作(actionBean.banUser)被执行,然后用户列表的getter也被执行,但是在页面上什么都没有发生。如果我手动刷新它(F5),新的修改过的数据就会出现
有什么想法吗?
谢谢,Ben试着用
a4j:outputPanel
<a4j:outputPanel id="myOutputPanel">
<rich:dataTable id="userlisttable" value="#{adminBean.userList}"
var="user" style="width:100%">
...
<a4j:commandLink action="#{adminBean.banUser}" value="One week"
style="font-size:16px" reRender="myOutputPanel" immediate="true">
<f:setPropertyActionListener target="#{adminBean.user}" value="#{user}" />
</a4j:commandLink>
...
</a4j:outputPanel>
...
...
我已经呈现了它工作的数据表..并且我正在使用Richfaces 4.0。如果您正在使用任何其他版本,请告诉我
下面是有效的代码
<rich:dataTable id="userlisttable" value="#{adminBean.userList}"
var="user" style="width:100%">
<rich:column id="banDate" headerClass="dataTableHeader"
label="Ban date" sortable="true" sortBy="#{user.userId}"
sortIconAscending="dataTableAscIcon"
sortIconDescending="dataTableDescIcon">
<f:facet name="header">
<h:outputText value="Ban Date" />
</f:facet>
<h:outputText value="#{user.userId}" />
</rich:column>
<rich:column id="actions" headerClass="dataTableHeader"
label="Actions" sortable="false">
<f:facet name="header">
<h:outputText value="Actions" />
</f:facet>
<h:panelGrid columns="4">
<h:outputText value="Ban user for" />
<a4j:commandLink action="#{adminBean.banUser}" value="One week"
style="font-size:16px" render="banDate" >
<f:setPropertyActionListener target="#{adminBean.user}"
value="#{user}" immediate="true" />
</a4j:commandLink>
</h:panelGrid>
</rich:column>
</rich:dataTable>
</h:form>
</rich:panel>
您是否在禁止用户后更新adminBean.userList?是的。我在getter中有一个DB查询,正如我提到的,getter被调用。我还尝试将查询放入操作中,因此如果更新(禁止)成功,它将被激发,但仍然没有任何结果:(试着给整张桌子重新招标,而不是只给一个专栏重新招标。我也试过了,也试过了ccheneson的想法,但没有一个解决了我的问题。嗯,那样的话,你能把你用的豆子寄给我吗?我知道这不应该有什么关系,但还是值得一试:)以防万一,如果您使用的是richfaces 3.X,那么浏览此链接将有助于您重新关注此问题
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name="adminBean")
@ViewScoped
public class AdminBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5338764155023244249L;
private List<UserBean> userList;
private UserBean user;
/**
* @return the user
*/
public UserBean getUser() {
return user;
}
/**
* @param user the user to set
*/
public void setUser(UserBean user) {
this.user = user;
}
/**
* @return the userList
*/
public List<UserBean> getUserList() {
return userList;
}
/**
* @param userList the userList to set
*/
public void setUserList(List<UserBean> userList) {
this.userList = userList;
}
public AdminBean() {
UserBean user1= new UserBean();
user1.setUserId("1");
user1.setUserName("userName1");
UserBean user2= new UserBean();
user2.setUserId("2");
user2.setUserName("userName2");
userList = new ArrayList<UserBean>();
userList.add(user1);
userList.add(user2);
}
public void banUser(){
if(user !=null){
user.setUserId("Rendered id R1");
}
}
}
import java.io.Serializable;
public class UserBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3820279264217591645L;
private String userName;
private String userId;
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @return the userId
*/
public String getUserId() {
return userId;
}
/**
* @param userId the userId to set
*/
public void setUserId(String userId) {
this.userId = userId;
}
}