1

用例:我在编辑表单中有一个非常重要的值,不应该经常更改。我决定让它只读,并在侧面有“更改”按钮。单击此按钮后,会向用户显示带有警告的对话框,并启用此只读字段以进行更改。(它是一个 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)。这很好用,但由于未知原因,现在提交表单的命令按钮上的保存操作停止工作。

第三次尝试:使用名称和组合框(带有隐藏类)渲染 h:outputText,并在单击更改按钮后切换其隐藏类。

function changeBackend() {
    $("#backendName").addClass("hidden");
    $("#integrationCombo_input").parent().parent().removeClass("hidden");
}

除了一件事之外,它也可以正常工作:保存完成后 - 没有渲染任何内容(既不是 ouputText 也不是组合框)

4

0 回答 0