如何在JSF中使特定按钮上的组件只读? 事件名称 演讲者姓名

如何在JSF中使特定按钮上的组件只读? 事件名称 演讲者姓名,jsf,jsf-2.2,Jsf,Jsf 2.2,上面是用JSF表单编写的代码部分,当我单击“ADD”按钮时显示。在相同的表单中,我还为表编写了代码,以显示如下数据: <h:panelGroup rendered="#{spkrCatEvt.createPanel}"> <label>Event Name</label> <h:selectOneMenu style="width: 250px" class="form-control" value="#{spkrCatEvt.selec

上面是用JSF表单编写的代码部分,当我单击“ADD”按钮时显示。在相同的表单中,我还为表编写了代码,以显示如下数据:

<h:panelGroup rendered="#{spkrCatEvt.createPanel}">
    <label>Event Name</label>
    <h:selectOneMenu style="width: 250px" class="form-control" value="#{spkrCatEvt.selected.evtId}" id="speaker_eve">
        <f:selectItems value="#{spkrCatEvt.eventlist}" var="sl" itemLabel="#{sl.value}" itemValue="#{sl.id}"/>
    </h:selectOneMenu>
    <label>Speaker Name</label>
    <h:selectOneMenu style="width: 250px" class="form-control" value="#{spkrCatEvt.selected.spkrId}" id="speaker">
        <f:selectItems value="#{spkrCatEvt.speakerlist}" var="sl" itemLabel="#{sl.value}" itemValue="#{sl.id}"/>
    </h:selectOneMenu>
</h:panelGroup>

演讲者姓名
事件名称
当我从表中单击更新按钮时,我想将显示“事件名称”的
设置为只读

我也尝试过给元素赋予rendered属性,但没有成功

作为JSF的初学者,我没有得到解决方案


我将非常感谢您的帮助。

使用
禁用
而不是
h:selectOne菜单上的
呈现
<代码>渲染
用于将其全部忽略。将其绑定到bean上的布尔值,单击按钮时将其设置为true。大概是

<table id="example" class="table table-bordered table-striped">
    <thead>
        <tr>
            <th>Speaker Name</th>
            <th>Event Name</th>
        </tr>
    </thead>

    <tbody>
        <ui:repeat id="dataTbl" value="#{spkrCatEvt.items}" var="item">
            <tr>
                <td><h:outputText value="#{item.spkrName}"/></td>
                <td><h:outputText value="#{item.evtName}"/></td>

                <td>
                    <h:commandLink action="#{spkrCatEvt.prepareView()}" id="view" title="View"><i class="fa fa-th-large"/></h:commandLink>
                    <h:outputText value="  "/>
                    <h:commandLink  action="#{spkrCatEvt.prepareEdit()}" id="edit" title="Edit"><i class="fa fa-edit"></i></h:commandLink>
                    <h:outputText value=" "/>
                    <h:commandLink  action="#{spkrCatEvt.activeEdit()}" id="activate" title="Activate" rendered="#{!item.active}"><i class="fa fa-check"></i></h:commandLink>
                    <h:commandLink  action="#{spkrCatEvt.activeEdit()}" id="deactivate" title="DeActivate" rendered="#{item.active}"><i class="fa fa-times"></i></h:commandLink>
                </td>
            </tr>
        </ui:repeat>
    </tbody>
</table>
如果是primefaces SelectOne菜单

select:disabled{
    color: black;
}

请问有什么问题?我永远不会明白,当有人简单地说,“这行不通”。在JSF生命周期中,不会评估与只读输入组件关联的值。你在问这件事吗?如果是,请参阅。肯定会有其他帖子,但这是有偏见的,因为它属于我。我的表单中有一个名为“添加新”的按钮。当我点击“添加新”时,它会显示一个输入字段和一个下拉框来选择值。此外,我的数据表中有三个操作按钮。当我单击update action时,它会显示带有填充值的相同字段,但这里我想禁用下拉列表。i、 e.selectonemenuI会说禁用而不是渲染。将其绑定到bean上的布尔属性,单击按钮时将其设置为true。它起作用了..谢谢@JaqenH'ghar..请在答案框中写下您的答案,以便我可以标记为正确
select:disabled{
    color: black;
}
.ui-selectonemenu.ui-state-disabled{
     opacity: 1; // Between 0.0 and 1, 0.35 being default
}