我想在我的rich的末尾添加一行:显示信息的数据表 在这一行中,我想提供一些输入,使用户能够添加新数据 我读到了这个答案: RICH:dataTable - add new row 但对我来说有点不同 我没有任何清单
我的xhtml是这样的:
<rich:dataTable value="#{serverMB.allServer}" var="servers1" iterationStatusVar="it" id="table" rows="15"
style="direction: rtl ; text-align: right">
<rich:column>
<f:facet name="header">#</f:facet>
#{it.index+1}
</rich:column>
<f:facet name="header">
<h:outputText value="#{msgs.servers}"/>
</f:facet>
<rich:column filterValue="#{serverMB.serverNameFilter}"
filterExpression="#{fn:containsIgnoreCase(servers1.server_name,serverMB.serverNameFilter )}">
<f:facet name="header">
<h:outputText value="#{msgs.server_name}"/>
<h:inputText value="#{serverMB.serverNameFilter}">
<a4j:ajax event="blur" render="table" execute="@this"/>
</h:inputText>
</f:facet>
<h:outputText value="#{servers1.server_name}"/>
</rich:column>
.
.
.
我的托管bean就像这样
public List<Server> getAllServer() {
return serverFacade.findAll();
}
我使用此方法显示信息,因此没有任何列表,我个人可以添加一行,依此类推...... 所以我必须做什么?
答案 0 :(得分:1)
应填充serverList并将其设置为类级变量。使用@PostConstruct
方法填充列表:
@PostConstruct
public void initServerList(){
//declare serverList as a class-scoped variable in your managed bean
serverList = serverFacade.findAll();
}
在托管bean中声明一个将添加到serverList
public void incrementList(){
Server server = new Server(); //create a dummy Server object
serverList.add(server); // List has been incremented. Be sure to AJAX-refresh the datatable after calling this method to reflect the new row.
}
从JSF视图中收集信息,然后用它来填充虚拟对象的字段:
public void updateLatestServer(){
Server lastServer = serverList.get(serverList.size-1);
lastServer.setName(serverNameFromView);
lastServer.setIP(IPFromView);
}
serverNameFromView
和IPFromView
是您将在JSF表单中收集的假设变量。