如何识别Java服务器面临2.0复合材料部件使用Ajax时?
-
26-09-2019 - |
题
我有以下Java服务器面临2.0复合部件。请注意,我使用的逐字
resources/customer/customer.xhtml
<composite:interface>
<composite:attribute name="id" required="false"/>
<composite:attribute name="firstName" required="false"/>
<composite:attribute name="lastName" required="false"/>
<composite:attribute name="age" required="false"/>
<composite:attribute name="rendered" required="false"/>
</composite:interface>
<composite:implementation>
<f:verbatim id="#{cc.attrs.id}" rendered="#{cc.attrs.rendered}">
<div>
<div>
<p>First name</p>
<h:outputText value="#{cc.attrs.firstName}"/>
</div>
<div>
<p>Last name</p>
<h:outputText value="#{cc.attrs.lastName}"/>
</div>
<div>
<p>Age</p>
<h:outputText value="#{cc.attrs.age}"/>
</div>
</div>
</f:verbatim>
</composite:implementation>
为了使用AJAX,我已经做(注呈现属性)
<h:form id="search">
<div>
<h:commandButton value="Search" action="#{customerSearchController.search}">
<f:ajax execute="@form" render="search:result"/>
</h:commandButton>
</div>
<customer:customer id="result"
rendered="#{customerSearchController.customer != null}"
firstName="#{customerSearchController.customer.firstName}"
lastName="#{customerSearchController.customer.lastName}"
age="#{customerSearchController.customer.age}"/>
</h:form>
我CustomerSearchController如下所示
private Customer customer;
// getter's and setter's
public void search() {
customer = new Customer();
customer.setFirstName("First");
customer.setLastName("Last");
customer.setAge(30);
}
两者CustomerSearchController和顾客的管理豆。但是,当我叫Ajax请求,它抱怨:搜索:未找到结果的
我应该做的我来解决这个问题???
解决方案
<f:ajax render>
应该指向的HTML DOM树中的现有的客户端ID。然而,由于因为它不是由服务器端渲染search:result
元素是不是在HTML DOM树可用,JS / AJAX无法找到HTML DOM树什么更新/渲染。
敷在另一元件这是在HTML DOM树总是可用,这样的Ajax可以找到它。
<h:panelGroup id="result">
<customer:customer rendered="..." />
</h:panelGroup>
无关的实际问题,注意f:verbatim
应该只包含逐字(纯HTML),不JSF组件。通过h:panelGroup
替换它。
不隶属于 StackOverflow