在我的JSF页面中,我有一个组合框,当选择组合框的项目时更新表格。JSF Ajax更新使命令链接在第一次点击时失败
该表格包含带有编辑链接的项目。
问题是当组合框改变了表格时,你需要点击两次链接才能进入页面。第一次点击只是刷新页面。
这里是XHTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<body>
<ui:composition template="/template.xhtml">
<ui:define name="windowTitle">Comment packages</ui:define>
<ui:define name="content">
<h3>Select the package to comment.</h3>
<h:form prependId="false">
Section:
<h:selectOneMenu id="selectSection" value="#{platformService.currentSection}">
<f:ajax render=":list-packages" />
<f:selectItems value="#{platformService.releasePlatform.sections}" />
</h:selectOneMenu>
</h:form>
<p/>
<h:panelGroup id="list-packages">
<h:dataTable id="packageList" var="package" value="#{packageService.packages}" border="1" >
<h:column>
<f:facet name="header">Package name</f:facet>
#{package.name}
</h:column>
<h:column>
<h:form>
<h:commandlink action="#{commentService.commentPackage}" value="Comment">
<f:param name="packageName" value="#{package.name}" />
</h:commandLink>
</h:form>
</h:column>
</h:dataTable>
</h:panelGroup>
</ui:define>
</ui:composition>
</body>
</html>
我也试过用的commandButton,但你还需要点击按钮两次。
我在Maven/Jetty中运行JSF 2.0.1-FCS。
为什么在f:ajax render属性中有“:list-packages”而不是“list-packages”?也许这是问题?也许表格不会被重新渲染? – amorfis 2010-09-07 15:21:16
':'是因为要渲染的组件不在窗体中。 http://ocpsoft.com/java/jsf2-java/how-to-jsf-2-0-render-components-outside-of-the-form/ 该表已更新/呈现正确,但链接表需要点击两次才能进入页面。 – Anthony 2010-09-08 08:22:40