Java RichFaces4,a4j:命令渲染另一个h:窗体
Java RichFaces4,a4j:命令渲染另一个h:窗体,java,jsf-2,richfaces,seam2,Java,Jsf 2,Richfaces,Seam2,dataTable中的a4j:commandLink如何呈现另一个h:form的UI组件? 在tableForm中,当我单击部门datatable的编辑a4j:commandLink时,ajax无法呈现部门的entryForm。 我还尝试使用ajax:region它不工作,也不显示任何错误。我不知道为什么 <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x
dataTable
中的a4j:commandLink
如何呈现另一个h:form
的UI组件?
在tableForm
中,当我单击部门datatable
的编辑a4j:commandLink
时,ajax
无法呈现部门的entryForm
。
我还尝试使用ajax:region
它不工作,也不显示任何错误。我不知道为什么
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.org/schema/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
template="/layout/adminTemplate.xhtml">
<ui:define name="body">
<h:form id="entryForm">
<h:outputText value="Edit Department" styleClass="subTitle"/>
<h:panelGrid columns="2">
<h:outputText value="Name : " styleClass="inputLabel"/>
<h:inputText value="#{ManageDepartmentAction.department.name}" styleClass="inputText"/>
<h:outputText value="Description : " styleClass="inputLabel"/>
<h:inputTextarea value="#{ManageDepartmentAction.department.description}" cols="50" rows="6"/>
</h:panelGrid>
<h:commandButton id="editBtn" value="Edit" action="#{ManageDepartmentAction.editDepartment}"/>
</h:form> <br/>
<h:form id="tableForm">
<rich:dataTable value="#{ManageDepartmentAction.departmentList}" var="dep" id="departmentTable"
style="width:100%" rowKeyVar="index">
<rich:column sortBy="#{dep.id}" style="width:200px;">
<f:facet name="header">
<h:outputText value="Department ID"/>
</f:facet>
<h:outputText value="#{dep.id}" styleClass="tableContent"/>
</rich:column>
<rich:column sortBy="#{dep.name}">
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:outputText value="#{dep.name}" styleClass="tableContent"/>
</rich:column>
<rich:column sortBy="#{dep.description}">
<f:facet name="header">
<h:outputText value="Description"/>
</f:facet>
<h:outputText value="#{dep.description}" styleClass="tableContent"/>
</rich:column>
<rich:column style="width:100px;text-align:center;">
<a4j:commandLink value="Edit-1" action="#{ManageDepartmentAction.prepareEditDepartment(dep)}" render="entryForm"/>
<a4j:commandLink value="Edit-2" action="#{ManageDepartmentAction.prepareEditDepartment(dep)}" render=":entryForm"/>
<a4j:commandLink value="Edit-3" action="#{ManageDepartmentAction.prepareEditDepartment(dep)}" render="tableForm :entryForm"/>
</rich:column>
</rich:dataTable>
</h:form>
</ui:define>
</ui:composition>
@Scope(CONVERSATION)
@Name("ManageDepartmentAction")
public class ManageDepartmentAction {
public List<Department> departmentList;
@In("#{DepartmentService}")
private IDepartmentService departmentService;
@Out(value = "department", required = false)
private Department department;
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
public boolean isCreateNew() {
return createNew;
}
@Begin(nested = true)
public void init() {
departmentList = departmentService.findAllDepartments();
}
public List<Department> getDepartmentList() {
return departmentList;
}
public void prepareEditDepartment(Department department) {
this.department = department;
}
public void editDepartment() {
System.out.println("Edit Department Name : " + department.getName());
}
}
@范围(对话)
@名称(“管理部门行动”)
公共类管理部门操作{
公开名单部门名单;
@在(“#{DepartmentService}”)中
私人创意部门服务部门服务;
@输出(value=“department”,必选=false)
私人部门,;
公共部门{
退货部;
}
公共服务部(部门){
这个部门=部门;
}
公共布尔值isCreateNew(){
返回新的;
}
@开始(嵌套=真)
公共void init(){
departmentList=departmentService.findAllDepartments();
}
公共列表getDepartmentList(){
返回部门列表;
}
公共事业部(部门){
这个部门=部门;
}
公共服务部(){
System.out.println(“编辑部门名称:+Department.getName());
}
}
尝试使用属性render=“@all”。请使用firebug验证表单的呈现id是否仅为“entryForm”,或者是否添加了一些JSF前缀。这可能是render=“entryForm”不工作的原因 您应该传递要使用ajax呈现的控件的完整id。一个基本的例子:
我想渲染整个h:form
,比如:form2
<代码>
或
必须在数据表中。