2012-05-02 4 views
0

У меня есть JSF h:datatable с рядами данных:Как открыть новую страницу при нажатии строки на странице JSF?

<h:dataTable id="dataTable" value="#{SessionsController.dataList}" binding="#{table}" var="item"> 
        <!-- Check box --> 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value="Select" /> 
         </f:facet> 
         <h:selectBooleanCheckbox onclick="highlight(this)" value="#{SessionsController.selectedIds[dataItem.id]}" /> 
        </h:column> 
        <h:column> 
         <f:facet name="header"> 
          <h:commandLink value="№" actionListener="#{SessionsController.sort}"> 
           <f:attribute name="№" value="№" /> 
          </h:commandLink> 
         </f:facet> 
         <h:outputText value="#{table.rowIndex + SessionsController.firstRow + 1}" /> 
        </h:column> 
        <h:column> 
         <f:facet name="header"> 
          <h:commandLink value="Account Session ID" actionListener="#{SessionsController.sort}"> 
           <f:attribute name="sortField" value="Account Session ID" /> 
          </h:commandLink> 
         </f:facet> 
         <h:outputText value="#{item.aSessionID}" /> 
        </h:column> 
        <h:column> 
         <f:facet name="header"> 
          <h:commandLink value="User ID" actionListener="#{SessionsController.sort}"> 
           <f:attribute name="sortField" value="User ID" /> 
          </h:commandLink> 
         </f:facet> 
         <h:outputText value="#{item.userID}" /> 
        </h:column> 
        <h:column> 
         <f:facet name="header"> 
          <h:commandLink value="Activity Start Time" actionListener="#{SessionsController.sort}"> 
           <f:attribute name="sortField" value="Activity Start Time" /> 
          </h:commandLink> 
         </f:facet> 
         <h:outputText value="#{item.activityStart}" /> 
        </h:column> 
        <h:column> 
         <f:facet name="header"> 
          <h:commandLink value="Activity End Time" actionListener="#{SessionsController.sort}"> 
           <f:attribute name="sortField" value="Activity End Time" /> 
          </h:commandLink> 
         </f:facet> 
         <h:outputText value="#{item.activityEnd}" /> 
        </h:column> 
        <h:column> 
         <f:facet name="header"> 
          <h:commandLink value="Activity" actionListener="#{SessionsController.sort}"> 
           <f:attribute name="sortField" value="Activity" /> 
          </h:commandLink> 
         </f:facet> 
         <h:outputText value="#{item.activity}" /> 
        </h:column> 
       </h:dataTable> 

Я хочу, чтобы дать возможность пользователю открывать новую страницу, когда он нажимает на подряд. я обнаружил, что JavaScript-код, чтобы быть полезным:

$("table#dataTable tbody tr").click(function() { 
      window.location = $(this).find("a:first").attr("href"); 
     }); 

Проблема заключается в том, что мне нужен JSF тег, который будет использоваться JavaScript, чтобы открыть новую страницу, когда строка щелкнул и передавать данные. В этом примере href используется для перехода в новое окно. Мне нужен тег JSF, который можно использовать для этой же цели. Есть ли подходящий тег JSF?

С наилучшими пожеланиями

ответ

1

Вы можете просто использовать обычный HTML <a> в JSF.

<a href="page.xhtml">link</a> 

Или <h:link>

<h:link value="link" outcome="page" /> 

Unrelated к конкретному вопросу, чтобы ваш селектор JQuery, не забудьте принять во внимание, что JSF дописывает идентификатор клиента с идентификатором компонентов родительского именования контейнера. Проверьте полученный результат HTML.

+0

Есть ли альтернативный способ открыть новую страницу? Например, это возможно, когда я нажимаю на строку, чтобы вызвать метод Java из управляемого компонента. Метод Java вернется, например, «123acb». Я настрою это в файле faces-config.xml в качестве правила навигации. –

+0

Не без хорошей загрузки JavaScript. Его проще использовать, например, для PrimeFaces ' '. См. Также http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf – BalusC

+0

ну, я предпочитаю использовать чистый JSF. Можете ли вы придумать любой возможный способ достижения моей цели? –

Смежные вопросы