0

我在表单中有以下HTML/JSF元素:JSF

<div class="btn-group" data-toggle="buttons-radio">
    <h:commandButton type="button" styleClass="btn btn-inverse" value="One Way"><f:ajax render="flexibleDates" listener="#{searchFlightsBean.setDirectionOneWay}"/></h:commandButton>
    <h:commandButton type="button" styleClass="btn btn-inverse" value="Round Trip"><f:ajax render="flexibleDates" listener="#{searchFlightsBean.setDirectionRoundtrip}"/></h:commandButton>
</div>

<h:panelGrid columns="2" id="flexibleDates" rendered="#{searchFlightsBean.directionInd.label == 'Return'}">
    <h:selectBooleanCheckbox value="#{searchFlightsBean.flexibleDates}" styleClass="flight-results-left-padding checkbox inline"/>
    <h:outputText value="+/- 3 days"/>
</h:panelGrid>

我在后端 bean 中有这样的代码:

public void setDirectionOneWay(AjaxBehaviorEvent event)
{
    this.directionInd = DirectionInd.ONEWAY;
    log.info("setting direction to oneway " + directionInd.label);
}

public void setDirectionRoundtrip(AjaxBehaviorEvent event)
{
    this.directionInd = DirectionInd.RETURN;
    log.info("setting direction to return " + directionInd.label);
}

日志反映代码运行良好。

但是,panelGrid应该渲染的内容仍然可见,没有任何迹象。有谁知道出了什么问题?

4

1 回答 1

1

您应该添加包装器并在您的而不是原始文件h:panelGrid中指向它f:ajaxh:panelGrid

例如:

<f:ajax render="flexibleDatesWrapper"...


<h:panelGroup id="flexibleDatesWrapper">
    <h:panelGrid columns="2" id="flexibleDates" rendered="#{searchFlightsBean.directionInd.label == 'Return'}">
        <h:selectBooleanCheckbox value="#{searchFlightsBean.flexibleDates}" styleClass="flight-results-left-padding checkbox inline"/>
        <h:outputText value="+/- 3 days"/>
    </h:panelGrid>
</h:panelGroup>

阅读这个问题/答案

于 2013-09-16T10:22:38.207 回答