当复选框为true时,我有一个表单。这不会奏效。奇怪的是:我在另一个页面上做了完全相同的工作。此外,当在支持bean本身中使用另一个布尔属性时,它可以工作。
function calcRoute() {
var startValue =start.value;
var endValue = end.value;
var distanceInput = document.getElementById("distanceKm");
var price = document.getElementById("price");
var request = {
origin:startValue,
destination:endValue,
travelMode:google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
distanceInput.value = response.routes[0].legs[0].distance.value / 1000;
price.value = parseFloat(distanceInput.value * 0.19).toFixed(2);
}
});
}
答案 0 :(得分:1)
有时,Primefaces会在组件在一个页面上运行的时刻出现,只是拒绝在另一个页面上工作。您在示例中发布的代码是正确的,如果在公司getter上设置断点,则最有可能,当触发ajax事件更改时,值将正确更新。发生的事情是您的组件未通过ajax正确刷新(或无法识别)。
我发现解决方案的解决方案是在OutputPanel中包含JSF的PanelGroup。我使用了你的代码的基础并做了下面的例子(显然用我的例子替换了我的项目中的标签。
<div class="field">
<p:selectBooleanCheckbox id="company"
value="# {participantDetailBean.participant.isCompany}">
<p:ajax event="change" update=":companyFields"/>
</p:selectBooleanCheckbox>
</div>
<p:outputPanel id="companyFields">
<h:panelGroup id="companyFields2" rendered="#{participantDetailBean.participant.isCompany}">
<div class="field">
<p:outputLabel value="DISPLAY THIS FIELD"/>
</div>
</h:panelGroup>
</p:outputPanel>
虽然这不是最干净的解决方案,但它可能会帮助您摆脱目前陷入困境的困境,或指导您获得正确的答案。哦,并且在使用PanelGroup
时不要忘记包含JSF include标记的xmlns:H =&#34; HTTP://xmlns.jcp.org/jsf/html"
答案 1 :(得分:-1)
尝试使用itemSelect
事件。