如何使用 primefaces 在检查或不检查 <p:selectBooleanCheckbox> 时更改 enable/disable a <p:calendar> 和 <p:inputTextarea>?

How to change enable/disable a <p:calendar> and an <p:inputTextarea> when a <p:selectBooleanCheckbox> is checked or not, using primefaces?

我有这部分代码:

<!-- /row -->
    <div class="row" style="margin-top: 15px">
        <div class="span8">
            <div class="control-group">
                <label class="hcg-control-label span5">Ημερομηνία Ανάκλησης Ποινής</label>
                <div class="controls span7">
                    <p:calendar id="recallDate" styleClass="hcg-full-width cursor-pointer" pattern="dd/MM/yyyy"
                                value="#{penaltiesView.penalty.recallDate}" disabled="true"/>
                    <i class="fa fa-calendar hcg-input-icon"></i>
                </div>
            </div>
        </div>
        <!-- /span -->
    </div>
    <!-- /row -->
    <div class="row" style="margin-top: 15px">
        <div class="span8">
            <div class="control-group">
                <label class="hcg-control-label span5">Σχόλια Ανάκλησης Ποινής</label>
                <div class="controls span7">
                    <p:inputTextarea rows="6" id="recallComments" styleClass="hcg-full-width" value="#{penaltiesView.penalty.recallComments}" disabled="true"/>
                </div>
            </div>
        </div>
        <!-- /span -->
    </div>
    <!-- /row -->
    <div class="row">
        <div class="span8">
            <div class="control-group">
                <label class="hcg-control-label span5">Ανάκληση - Ολοκλήρωση Πειθαρχικής Ποινής</label>
                <div class="controls span7">
                    <p:selectBooleanCheckbox id="RevocationOrCompletion" styleClass="hcg-checkbox margin-bottom-10" value="#{penaltiesView.penalty.revocationOrCompletion}" disabled="#{!penaltiesView.canEdit()}" >
                        <p:ajax event="change" update="recallDate,recallComments"/>
                    </p:selectBooleanCheckbox>
                </div>
            </div>
        </div>
        <!-- /span -->
    </div>

产生以下组件:

现在,我想做的是在选中复选框时启用日历组件和文本区域,如果取消选中,则必须再次禁用它们。根据要求使用 javascript 不是有效的方法。我在如何实现这一点上遇到了一些困难。 任何建议表示赞赏。 提前谢谢你。

您的元素无法更新,因为您在代码中为日历和文本区域设置了 disabled=true。如果您想根据布尔复选框更改禁用参数,则禁用值需要是布尔复选框的值。您的布尔字段还需要有 geters 和 setter。

<p:calendar id="recallDate" styleClass="hcg-full-width cursor-pointer" pattern="dd/MM/yyyy"
                            value="#{penaltiesView.penalty.recallDate}" disabled="#{penaltiesView.penalty.revocationOrCompletion}"/>
<p:inputTextarea rows="6" id="recallComments" styleClass="hcg-full-width" value="#{penaltiesView.penalty.recallComments}" disabled="#{penaltiesView.penalty.revocationOrCompletion}"/>

<p:selectBooleanCheckbox id="RevocationOrCompletion" styleClass="hcg-checkbox margin-bottom-10" value="#{penaltiesView.penalty.revocationOrCompletion}" disabled="#{!penaltiesView.canEdit()}" >
                    <p:ajax update="recallDate recallComments" process="@this"/>
</p:selectBooleanCheckbox>