我嘗試在backing bean中創建一個InputField並將其添加到視圖中,但數據綁定似乎只能以只讀方式工作。JSF綁定與setValueExpression只讀?
我的支持bean創建一個UIInput這樣的:
UIComponent textInput = new UIInput();
textInput.setId("operandInputText");
textInput.setValueExpression("value", ef.createValueExpression(elCtx, "#{row.operandValues[0]}", String.class));
textInput.setValueExpression("rendered", ef.createValueExpression(elCtx, "#{row.inputType == 'text'}", Boolean.class));
mInputPanelGroup.getChildren().add(textInput);
的panelGroup中是一個DataTable和綁定到bean的列中:
<p:column id="operandColumn">
<h:panelGroup id="inputPanelGroup" binding="#{locateEmployeeBean.inputPanelGroup}" >
<h:inputText id="testInput" value="#{row.operandValues[0]}" />
</h:panelGroup>
</p:column>
的<h:inputText/>
的panelGroup中內只是爲了測試,這是我發現,我所做的與setValueExpression(...)
作品至少是隻讀的。
在瀏覽器中,我現在有2個inputFields,首先是'testInput',然後是'operandInputText'。 當我在'operandInputText'中輸入一個值並提交時,該值不會被保存,但是當我在'testInput'-Field中輸入一個值時,它會被提交,另外值會顯示在BOTH inputFields中。
的operandValues是simpe對象數組:
private Object[] mOperandValues = new Object[2];
可這有什麼關係我傳遞給setValueExpression(...)
具體的數據類型? 我試過對象,但沒有改變任何東西。
任何想法爲什麼發生這種情況? 在此先感謝!