我在Seam中创建了一个webapp,但遇到了一个我似乎无法修复的问题。表单值在a4j之后没有传递给Seam bean reRender
我有一个JSF表单,客户可以通过组合框选择预订类型。根据选定的值,其他表单组件被渲染。
例如:客户选择小时作为预订类型,panelGroup被呈现在客户可以选择开始和结束小时的地方。但是,如果客户选择“部分时间”作为预订类型,则选择一个菜单得到渲染,客户可以在其中选择一天中的一部分(早上,下午,晚上)
表现良好,但组件的值使用渲染的条件不会传递给bean。他们保持空值。
这是我讲的代码:
<s:div id="spot"
rendered="#{selectedProduct.productType.name eq 'Flex Spot'}">
<h:panelGrid columns="2">
<h:outputText value="Reservation Type" />
<h:selectOneMenu value="#{selectedPeriodPart}">
<s:selectItems
value="#{productManager.getAvailableDayPartsSpot()}"
var="daypart"
label="#{daypart.label}"></s:selectItems>
<s:convertEnum />
<a4j:support ajaxSingle="true"
event="onchange"
action="#"
reRender="spot">
</a4j:support>
</h:selectOneMenu>
<h:outputText id="date_spot" value="Date" />
<a4j:outputPanel id="calendar_spot" layout="block">
<rich:calendar value="#{reservation.reservationPeriod.startDate}"
locale="en" cellWidth="24px"
cellHeight="22px"
style="width:200px" />
</a4j:outputPanel>
<h:outputText rendered="#{selectedPeriodPart eq 'DAY_PART'}"
value="Daypart" />
<h:selectOneMenu value="#{selectedDaypart}"
rendered="#{selectedPeriodPart eq 'DAY_PART'}">
<f:selectItem id="si_morning" itemLabel="Morning (6:00 - 12:00)"
itemValue="morning" />
<f:selectItem id="si_afternoon"
itemLabel="Afternoon (12:00 - 18:00)" itemValue="afternoon" />
<f:selectItem id="si_evening" itemLabel="Evening (18:00 - 00:00)"
itemValue="evening" />
</h:selectOneMenu>
<h:outputText rendered="#{selectedPeriodPart eq 'HOURS'}"
value="Hours" />
<h:panelGroup id="hours_spot"
rendered="#{selectedPeriodPart eq 'HOURS'}">
<ui:include src="/includes/reservation/select_hours.xhtml" />
</h:panelGroup>
</h:panelGrid>
</s:div>
注:日历值确实会回传给豆,但这段代码的价值不会(它如果删除所呈现的条件):
selectOneMenu value="#{selectedDaypart}" rendered="#{selectedPeriodPart eq 'DAY_PART'}"
谢谢回答这个问题=)不解决我的问题=( 做一些事情说清楚:该支持Bean是有状态会话bean(EJB)。与之交谈范围 我试着在包装
selectOneMenu value="#{selectedDaypart}"
一个a4j:outputPanel
并把渲染的条件放在那个组件上,但是这也不起作用。 – Casper 2010-05-11 13:29:41对不起,只是建议运行一个调试器而已。至少,您现在知道在哪里查找问题的原因以及如何解决问题:确保所讨论组件的“rendered”属性在后续请求中不会评估为“false”。 – BalusC 2010-05-11 13:35:01