JSF-доступ к значению атрибута "var" из dataTable из jsp - PullRequest
0 голосов
/ 17 октября 2011

Я использую JSF 1.1.У меня есть страница JSP с

    ....
    <t:dataTable id="data"
       styleClass="scrollerTable"
       headerClass="standardTable_Header"
       footerClass="standardTable_Header"
       columnClasses="col1,col2,col3"
       var="product"
       value="#{beanProduct.listOfProducts}"
       preserveDataModel="false"
       rows="10"
    >
    ....

У #{product} есть атрибут с именем state.Если его значение «в ожидании», то я хочу отобразить <h:commandButton>, иначе я ничего не отображаю.

Как я могу получить значение #{product.state} в коде скрипта JSP?

Я попробовал следующее:

    ....
    <h:column>
       <f:facet name="header">
             <h:outputText value="#{messages['list']}" />
       </f:facet>
       <%
           // ----> In this point, I want know the value of "product.state"
       FacesContext context = FacesContext.getCurrentInstance();  
       Application app = context.getApplication();  
       ValueBinding binding = app.createValueBinding("#{product.state}"); 
       Object valueOfProduct = binding.getValue(context);
       String stateProduct = (String)valueOfProduct;
       if (stateProduct.equals("pending")) {
       %>
       <h:panelGrid>
        <h:commandButton value="Send" actionListener="#{beanProduct.Item}" action="#{beanProduct.sending">
        <f:attribute name="idProduct" value="#{product.id}" />
            </h:commandButton>
           </h:panelGrid>
           <%
           }
           else {
           %>
           // Do nothing.
           <%
       }
       %>
    </h:column>
</t:dataTable>

Но это не работает.Как мне этого добиться?

1 Ответ

1 голос
/ 17 октября 2011

Вместо этого вы должны использовать атрибут Rendered:

  <h:column>
     <f:facet name="header">
       <h:outputText value="#{messages['list']}" />
     </f:facet>
     <h:commandButton rendered="#{product.pending}" value="Send" 
                      actionListener="#{beanProduct.Item}" 
                      action="#{beanProduct.sending">
        <f:attribute name="idProduct" value="#{product.id}" />
     </h:commandButton>

  </h:column>

Смешивание JSF и JSP, как это не будет работать, потому что dataTable var не будет доступен во время выполнения вашего встроенного кода.Также это не рекомендуемая практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...