使用案例:我在编辑表单中有一个非常重要的值,不应经常更改。我决定让它只读,并在侧面有“更改”按钮。单击此按钮后,对话框显示警告显示给用户,并且此只读字段已启用更改。 (这是一个selectOneMenu)
首次尝试:
<p:selectOneMenu
id="integrationCombo"
value="#{backendBean.integration.backend}"
widgetVar="backendIntegrationCombo"
disabled="true">
<f:selectItems
value="#{backendBean.backends}"
var="backend" itemValue="#{backend}"
itemLabel="#{backend.name}" />
</p:selectOneMenu>
<p:commandButton type="button"
styleClass="inlineTableCellButton"
onclick="backendIntegrationCombo.enable()"
value="#{msg['button.change']}" />
这会启用组合框,但是他的值不会发送到服务器(这是因为我发现了disabled = true)
我的第二次尝试是在视图范围内的bean上使用可编辑的布尔值 disable =“#{!bean.editable}”并使用命令按钮调用setEditable(true)。这很好用,但由于未知原因,现在提交表单的命令按钮上的保存操作停止工作。
第三次尝试:使用name和combobox(隐藏类)渲染h:outputText,单击更改按钮后切换其隐藏类。
function changeBackend() {
$("#backendName").addClass("hidden");
$("#integrationCombo_input").parent().parent().removeClass("hidden");
}
除了一件事之外,它也可以正常工作:保存完成后 - 没有任何内容呈现(既不是ouputText也不是组合框)