我在selectOneChoice
中创建了三个calc.amx
组件,根据它将进行计算的值更改并得出一些输出。我需要将它作为inputText
(不可编辑的文本)附加到相同的amx页面。以下是我的尝试,
Calc.amx:
所有这些selectOneChoice
都会valueChangeListener
将值设置为bean,
<amx:selectOneChoice value="valueOne" label="Value One" id="soc1" valueChangeListener="#{calcBean.setValueOne}">
<amx:selectItems value="valueOne" id="si1"/>
</amx:selectOneChoice>
<amx:selectOneChoice value="valueTwo" label="Value Two" id="soc2" valueChangeListener="#{calcBean.setValueTwo}">
<amx:selectItems value="valueTwo" id="si2"/>
</amx:selectOneChoice>
<amx:selectOneChoice value="valueThree" label="Value Three" id="soc3" valueChangeListener="#{calcBean.setValueThree}">
<amx:selectItems value="valueThree" id="si3"/>
</amx:selectOneChoice>
<amx:inputText value="#{bindings.grantTotal.inputValue}" label="#{bindings.grantTotal.hints.label}" id="it4"/>
CalcBean.java:
private String firstValue;
private String secondValue;
private String thirdValue;
private String grantTotal;
public void setFirstValue(String firstValue) {
String oldFirstValue = this.firstValue;
this.firstValue = firstValue;
propertyChangeSupport.firePropertyChange("firstValue", oldFirstValue, firstValue);
}
public String getFirstValue() {
return firstValue;
}
public void setSecondValue(String secondValue) {
String oldSecondValue = this.secondValue;
this.secondValue = secondValue;
propertyChangeSupport.firePropertyChange("secondValue", oldSecondValue, secondValue);
}
public String getSecondValue() {
return secondValue;
}
public void setThirdValue(String thirdValue) {
String oldThirdValue = this.thirdValue;
this.thirdValue = thirdValue;
propertyChangeSupport.firePropertyChange("thirdValue", oldThirdValue, thirdValue);
}
public String getThirdValue() {
return thirdValue;
}
public void setGrantTotal(String grantTotal) {
String oldGrantTotal = this.grantTotal;
this.grantTotal = grantTotal;
propertyChangeSupport.firePropertyChange("grantTotal", oldGrantTotal, grantTotal);
}
public String getGrantTotal() {
return grantTotal;
}
public void addPropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.removePropertyChangeListener(l);
}
public void setValueOne(ValueChangeEvent valueChangeEvent) {
firstValue = valueChangeEvent.getNewValue().toString();
doCalc(firstValue,secondValue,thirdValue);
}
public void setValueTwo(ValueChangeEvent valueChangeEvent) {
secondValue = valueChangeEvent.getNewValue().toString();
doCalc(firstValue,secondValue,thirdValue);
}
public void setValueThree(ValueChangeEvent valueChangeEvent) {
thirdValue = valueChangeEvent.getNewValue().toString();
doCalc(firstValue,secondValue,thirdValue);
}
public void doCalc(String firstValue, String secondValue, String thirdValue){
if(firstValue!=null&&secondValue!=null&&thirdValue!=null){
System.out.println(firstValue+secondValue+thirdValue);
grantTotal = firstValue+secondValue+thirdValue;
setGrantTotal(grantTotal);
System.out.println("grantTotal : "+grantTotal);
} else {
grantTotal = "No Value";
setGrantTotal(grantTotal);
System.out.println("grantTotal : "+grantTotal);
}
}
所以我能够根据selectOneChoice
选择进行计算,并且还能够在sop语句中打印计算出的输出。
现在,我如何根据每个grantTotal
选项将inputText
值反映到selectOneChoice
的同一个amx页面中?
答案 0 :(得分:3)
grandTotal是绑定中的attributeValue吗?如果是这样,您可以使用EL轻松设置值。
示例:强>
int myValue = 123;
AdfmfJavaUtilities.setELValue("#{bindings.GrandTotal.inputValue}", myValue);
Click Here有关setELValue()
。