我正在将 jboss seam、richfaces 3.x 和 jsf 1.x 应用程序迁移到 jboss seam 2.3、richfaces 4 和 jsf 2.x。我有一个丰富的:dataTable 显示一些数据,列的样式是使用在第一次加载时起作用的值表达式评估的。我的要求是,每当我单击一行时,都会调用支持 bean 方法,该方法将单击的行对象设置为选中状态,并且在完成 ajax 时我再次渲染表,但类不适用于所选行或被点击了。我在标签中包含的 css 文件中定义了类。
My view Code goes here:
<rich:dataTable id="table" value="#{backingBean.getRows()}" var ="top" onrowClick="#{rich:element('rowClickButton')}.click();">
<rich:column styleClass="#{top.selected ? 'selected':'unselected'>
<a4j:commandButton id="rowClickButton" style="display:none" render="#{top.selected ? 'table':null} action ="#{bean.setRowclicked(top)}"/>
<h:outputText value="First Column"/>
</rich:column>
<rich:column styleClass="#{top.selected ? 'selected' : 'unselected'>
<h:outputText value="Second Column"/>
</rich:column>
My Backing Bean goes here
public class BackingBean(){
public List<Rows> getRows(){
List<Rows> rows = new ArrayList<Rows>();
rows.add(row1);
rows.add(row2);
return rows ;
}
public void setRowClicked(top){
top.selected(true);
}
}
PS:我正在采用创建按钮并将其隐藏在列中的方法,因为 a4j:ajax 上的 rowClick 不起作用,我需要将对象“top”传递给支持 bean,任何优化或更好的方法也非常感谢和欢迎。