我希望我能够在没有详细说明的情况下说出这一点。
当我提交报告时,我会弹出一个IceFaces对话框。在此对话框中,您有一个面板系列,然后是与它们相关联的记录数据表。这些记录的下拉列表包含2个值 - 接受和争议。菜单的值保存在entitybean中,这是基于会话的,但bean本身是请求范围的。我们正在使用JSF 2.1,因此视图范围不是可能的。
问题是对话框的初始显示将所有人及其记录显示为Accept - 这是默认值。如果我选择一个人和一个他们的记录作为争议,然后继续处理,则隐藏对话框。到现在为止还挺好。现在,如果再次单击主页面上的“订单报告”按钮,则会再次显示该对话框。这一次,先前的选择显示Dispute何时应该显示Accept。值为' N',它是指向Accept的itemValue。当价值为“' Y”时,应该选择争议。我甚至用值输出了一个outputText,它显示了' N'。不知何故,值和selectItem没有相互通信。更糟糕的是,如果您单独离开Dispute并关闭对话框以允许继续处理,则支持bean会在值中看到Accept(该记录的值为' N')。这会在后端弄乱事情。解决这个问题的唯一方法是解析参数值map,如果是Y,则设置正确的值。对我来说,这是一个黑客。也许是我缺少的东西。
如何强制对话框将所有下拉列表重置为值属性?每次我显示对话框时,这些值都会重置为' N'默认情况下,即Accept。如果您想对记录提出异议,则必须选择该记录。我已验证了这些值,所有这些值都设置为“N' N'他们应该这样。我认为对话框搞砸了。
这是一个代码段:
<ice:panelSeries value="#{myBean.onlyInsuredPersonAsList}" var="person">
<ice:dataTable id="violationses" styleClass="violationsTbl"
value="#{person.violations}" var="violation"
width="100%" scrollable="true">
<h:selectOneMenu id="acceptDispute" styleClass="selectFieldControl"
value="#{violation.disputedFlag}" required="true">
<f:selectItem itemLabel="Accept" itemValue="N"/>
<f:selectItem itemLabel="Dispute" itemValue="Y"/>
</h:selectOneMenu>
</ice:dataTable>
</ice:panelSeries>
这是一个ace:对话框。
第一次,显示每个人内所有违规行为的接受。 关闭对话框,然后重新排序报告。 即使从#{violation.disputedFlag}返回的值显示“N&#39”,也会显示之前的争议值。