2010-10-26 2 views
0

У меня есть страница, которая перечисляет все из моего поста таблицы, это выглядит следующим образом:Set ID каждой линии по ссылке в DataTable

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
    <title>TODO supply a title</title> 
</head> 
<body> 
    <p> 
     <h:dataTable id="grid1" value="#{postControle.lista}" var="post1"> 
      <h:column> 
       <f:facet name="header"><h:outputText style="float: left; font-weight: bold;" value="Titulo"/></f:facet> 
       #{post1.titulo} 
      </h:column> 
      <h:column> 
       <f:facet name="header"><h:outputText style="float: left; font-weight: bold;" value="Texto"/></f:facet> 
       #{post1.texto} 
      </h:column> 
      <h:column> 
       <f:facet name="header"><h:outputText style="float: left; font-weight: bold;" value="Opções"/></f:facet> 
       <a href="#{postControle.requestManager('alterar',post1.id)}">Alterar</a> | 
       <a href="#{postControle.requestManager('consultar',post1.id)}">Consultar</a> 
      </h:column> 
     </h:dataTable> 
    </p> 
</body> 

Что я хочу, что, по конец каждой строки, 2 ссылки, один для обновления, а другой для действий show получают идентификатор этой конкретной записи, но поскольку он устанавливает каждый идентификатор в качестве последнего отказа списка. Как я могу это исправить?

Edit: Херес HTML генерируется:

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title>TODO supply a title</title> 
</head> 
<body> 
    <p><table id="grid1"> 
      <thead> 
       <tr> 
        <th scope="col"><span style="float: left; font-weight: bold;">Titulo</span></th> 
        <th scope="col"><span style="float: left; font-weight: bold;">Texto</span></th> 
        <th scope="col"><span style="float: left; font-weight: bold;">Opções</span></th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td> 
         testeZ 
        </td> 
        <td> 
         testeZ 
        </td> 
        <td><a href="./faces/alterar.xhtml">Alterar</a> | 
         <a href="./faces/consultar.xhtml">Consultar</a></td> 
       </tr> 
       <tr> 
        <td> 
         testeZ 
        </td> 
        <td> 
         testeZ 
        </td> 
        <td><a href="./faces/alterar.xhtml">Alterar</a> | 
         <a href="./faces/consultar.xhtml">Consultar</a></td> 
       </tr> 
       <tr> 
        <td> 
         testeZ 
        </td> 
        <td> 
         testeZ 
        </td> 
        <td><a href="./faces/alterar.xhtml">Alterar</a> | 
         <a href="./faces/consultar.xhtml">Consultar</a></td> 
       </tr> 
       <tr> 
        <td> 
         asdasdsa 
        </td> 
        <td> 
         asdsadsad 
        </td> 
        <td><a href="./faces/alterar.xhtml">Alterar</a> | 
         <a href="./faces/consultar.xhtml">Consultar</a></td> 
       </tr> 
       <tr> 
        <td> 
         ddddd 
        </td> 
        <td> 
         dddd 
        </td> 
        <td><a href="./faces/alterar.xhtml">Alterar</a> | 
         <a href="./faces/consultar.xhtml">Consultar</a></td> 
       </tr> 
       <tr> 
        <td>      
        </td> 
        <td>      
        </td> 
        <td><a href="./faces/alterar.xhtml">Alterar</a> | 
         <a href="./faces/consultar.xhtml">Consultar</a></td> 
       </tr> 
       <tr> 
        <td>      
        </td> 
        <td>      
        </td> 
        <td><a href="./faces/alterar.xhtml">Alterar</a> | 
         <a href="./faces/consultar.xhtml">Consultar</a></td> 
       </tr> 
       <tr> 
        <td> 
         dsakhgdsail 
        </td> 
        <td> 
         woaiuheaoiusrhjgsohrspuiohpousrhpiojnojho 
        </td> 
        <td><a href="./faces/alterar.xhtml">Alterar</a> | 
         <a href="./faces/consultar.xhtml">Consultar</a></td> 
       </tr> 
      </tbody> 
     </table> 
    </p> 
</body> 

+0

вы можете предоставить сгенерированным HTML-код? – Bozho

+0

Код HTML добавлен – onildo

ответ

1

Я не уверен, что вы хотите сделать, в конце концов, но почему бы вам не использовать <h:commandLink> (который будет генерировать HTML <a> tag) вместо этого (не забудьте вставить ваш <h:datatable> в <h:form>)?

<h:form id="myForm"> 
    ... 
    <h:dataTable id="grid1" value="#{postControle.lista}" var="post1"> 
     ... 
     <h:column> 
      <f:facet name="header"><h:outputText style="float: left; font-weight: bold;" value="Opções"/></f:facet> 
      <h:commandLink action="#{postControle.alterar}" value="Alterar"/> 
      <h:commandLink action="#{postControle.consultar}" value="Consultar"/> 
     </h:column> 
    </h:dataTable> 

Затем необходимо определить два действия в вашем Java Bean (String вернулся определяет навигационный случай применить после выполнения метода):

public String alterar() { 
    ... 
} 

public String consultar() { 
    ... 
} 

И в каждом методе действий, вы можете получить соответствующий элемент (т.е. post1) с использованием getRowData() метода HtmlDatatable компонента:

public String alterar() { 
    HtmlDatatable table = (HtmlDatatable) FacesContext.getCurrentInstance().getViewRoot().findComponent("myForm:id1"); 
    YourClass element = (YourClass) table.getRowData(); 
    ... 
+0

Я хочу использовать ссылки, а не кнопки. Его список данных, содержащий все сообщения из таблицы db, из которых я хочу, через ссылки в каждой строке отправляет пользователя на страницу show/update этого конкретного сообщения (сообщение этой строки). – onildo

+0

@onildo мой ответ работает и для ссылок. Замените компонент commandButton на commandLink. – romaintaz

+0

@onildo Я отредактировал свой ответ, чтобы использовать 'commandLink', поэтому он будет соответствовать вашим требованиям сейчас ... – romaintaz

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