所以这是一个非常简单的问题,我就是不明白为什么它不能像我预期的那样工作。
我的项目是J2EE中的一个单位转换器。HTML前端和Java的后端。
我有两个下拉框在我的html页面。
<p:selectOneMenu id="convertFrom" value="#{conversions.convertFrom}">
<f:selectItem itemLabel="Inches" itemValue="Inches" />
<f:selectItem itemLabel="Feet" itemValue="Feet" />
<f:selectItem itemLabel="Centimeters" itemValue="Centimeters" />
<f:selectItem itemLabel="Meters" itemValue="Meters" />
</p:selectOneMenu>
<p:selectOneMenu id="convertTo" value="#{conversions.convertTo}">
<f:selectItem itemLabel="Inches" itemValue="Inches" />
<f:selectItem itemLabel="Feet" itemValue="Feet" />
<f:selectItem itemLabel="Centimeters" itemValue="Centimeters" />
<f:selectItem itemLabel="Meters" itemValue="Meters" />
</p:selectOneMenu>这些下拉框被确认为工作,因为我已经完成了转换部分。
我正在尝试实现一个“切换单位”按钮,所以如果你有英寸>英尺,你可以按下一个按钮,将它切换到英尺>英寸。因此,需要用converTo替换convertFrom。
public void switchUnits() {
String unitTo = getConvertTo();
String unitFrom = getConvertFrom();
setConvertTo(unitFrom);
setConvertFrom(unitTo);
}我在html页面上有一个调用此方法的按钮(我通过硬编码setConvertTo("Feet")并查看它的工作来确认它的工作)。
因此,通过故障排除,我已经确定getter和getter工作正常。并且按钮正确地调用了该方法。
所以我的问题是,我的switchUnits方法中的代码出了什么问题?正如这里所写的,当它被调用时,什么也不会发生。这两个值保持不变。
感谢您的帮助,谢谢。
发布于 2018-12-02 22:30:32
您的问题不完整,并且部分代码在这里不可见,您必须编写按钮代码,但我认为您需要在调用您的方法后更新您的selectOneMenus in按钮,如下所示:
<p:commandButton id="yourButton" action="#{yourBean.switchUnits}"
update="form_id:convertFrom form_id:convertTo">
</p:commandButton>按钮更新中selectOneMenus的id可能会随着表单结构的不同而改变。
发布于 2018-12-03 16:41:44
除了@Soheil.St回答哪些状态更新您的组件之外,我还可以补充说,您还需要在selectOneMenu中放置一个<p:ajax/>来提交部分数据。如果没有提交的数据,您的选择将不会反映在托管bean中。
<p:selectOneMenu id="convertFrom" value="#{conversions.convertFrom}">
<f:selectItem itemLabel="Inches" itemValue="Inches" />
<f:selectItem itemLabel="Feet" itemValue="Feet" />
<f:selectItem itemLabel="Centimeters" itemValue="Centimeters" />
<f:selectItem itemLabel="Meters" itemValue="Meters" />
<p:ajax/>
</p:selectOneMenu>
<p:selectOneMenu id="convertTo" value="#{conversions.convertTo}">
<f:selectItem itemLabel="Inches" itemValue="Inches" />
<f:selectItem itemLabel="Feet" itemValue="Feet" />
<f:selectItem itemLabel="Centimeters" itemValue="Centimeters" />
<f:selectItem itemLabel="Meters" itemValue="Meters" />
<p:ajax/>
</p:selectOneMenu>如果selectOneMenu表单是另一个表单,则需要在按钮中设置它的process和地址。
https://stackoverflow.com/questions/53576898
复制相似问题