Holen Sie sich Zeilen-Id, die von einem anzeigen-tag-Tabelle auf eine jsp in einer struts action-Klasse 2
Bin ich mit dem display-tag für die Anzeige von Daten in eine Tabelle auf einer JSP. Nun möchte ich zwei links für jede Zeile, die man zum Bearbeiten & eine für das löschen der Zeile.
Gibt es einige Beiträge auf stackoverflow über die gleichen([Frage]: Wie verwenden Sie mehrere Schaltflächen (jede Zeile) für die JSP-Seite mit Struts2 , [Frage]: Bekommen Wert aus einer Zeile in einer JSP-Seite per display-tag , [Frage]: Abrufen von Wert aus Zeile in Struts2 Tabelle, Während mit Displaytag), aber ich konnte nicht finden, eine Lösung, die funktioniert für mich.
Google und gab mir ( http://demo.displaytag.org/displaytag-examples-1.2/example-decorator-link.jsp ), sondern man verwendet die URL-Umschreibung, die ich nicht verwenden möchte und darüber hinaus demonstriert die Verwendung mit struts(ich bin mit struts 2).
Meine jsp-Struktur und was ich bin versucht derzeit ist :
<s:url id="editReport" action="editReport" />
<sd:div href="%{editReport}" listenTopics="editReport" formId="actionForm" showLoadingText="false" preload="false">
<s:url id="updLists" action="updLists" />
<sd:div href="%{updLists}" listenTopics="updLists" formId="enterDayReport" showLoadingText="false" preload="false">
<s:form id="enterDayReport" action="enterDayReport">
<sd:autocompleter label="Customer " name="customer" list="customerList" valueNotifyTopics="updLists" autoComplete="false" searchType="substring"/>
<sd:autocompleter label="Contact " name="contact" list="contactList" valueNotifyTopics="updLists" autoComplete="false" searchType="substring"/>
<s:select label="Stage " name="stage" list="stageList" headerKey="0" headerValue="Select" />
<s:select label="Type " name="type" list="typeList" headerKey="0" headerValue="Select" />
<sd:datetimepicker label="Date" name="date" formatLength="small" displayFormat="dd - MMM - yyyy"/>
<s:textarea label="Summary" name="summary" cols="40" rows="10"/>
<s:submit value="Save Report"/>
</s:form>
</sd:div>
</sd:div>
<s:url id="deleteReport" action="deleteReport" />
<sd:div href="%{deleteReport}" listenTopics="deleteReport" formId="actionForm" showLoadingText="false" preload="false">
<disp:table name="dayReportsList" export="true" class="dataTable">
<disp:column property="contactCode" title="Contact"/>
<disp:column property="customerCode" title="Customer"/>
<disp:column property="stage" title="Stage"/>
<disp:column property="type" title="Type"/>
<disp:column property="summary" title="Summary"/>
<disp:column property="reportDate" title="Date" format="{0,date,dd-MMM-yyyy}" />
<disp:column property="rowId" href="%{editReport}" paramId="rowID" paramProperty="rowId" title="Action">
<s:form id="actionForm" name="actionForm">
<s:hidden id="rowId" name="rowId" value="%{rowId}"/> //This is not getting populated.
<s:a onclick="dojo.event.topic.publish('editReport')">Edit<s:property value="rowId"/></s:a><br>
<s:a onclick="dojo.event.topic.publish('deleteReport')">Delete</s:a>
</s:form>
</disp:column>
</disp:table>
</sd:div>
Hier das einzige problem, das ich konfrontiert ist, dass die hidden
Feld in der Anzeige tag-Tabelle ist nicht immer aufgefüllt, die "rowId" - Wert, der ein Teil von "dayReportsList".
Die Idee hier ist, dass, wenn ein Benutzer klickt auf Bearbeiten Sie die Daten für die Zeile aufgefüllt ruft das Formular für die Bearbeitung. Und wenn der Benutzer klickt auf löschen, die Zeile wird aus der Datenbank gelöscht und die Anzeige der Tabelle aktualisiert wird JSP.
Bitte beraten.
Dank!!
Okz, noch vielen Dank für Ihre Aufmerksamkeit.
Hallo, auch ich vor dem gleichen problem, Kannst du bitte mir sagen, wie ich über kommen. hier mein link, ich danke Ihnen sehr herzlich im Voraus stackoverflow.com/questions/20812145/...
Die Antwort unten sollte hilfreich sein.
InformationsquelleAutor kanishk | 2011-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das aktuelle element der Liste ist verfügbar über die Seite context-Attribut "foobar" wenn die
display:table
- tag hat das Attributuid="foobar"
(oderid="foobar"
). Sehen http://www.displaytag.org/1.2/displaytag/tagreference.htmluid=foobar
, dann kann ich es so zu benutzen --><s:hidden name="rowId" value="%{foobar.rowId}"/>
. Ich bin gonna versuchen Sie es jetzt. Danke!!Hi, ich habe versucht, was ich oben erwähnt habe und einige andere Sachen auch, aber nichts passiert. was mache ich falsch ?
Ich weiß nicht, Struts2 sehr gut, so dass ich nicht weiß was für %{foobar.rowId} tut genau das. Die standard EL-Ausdruck ${foobar.rowId}.
${} ist nicht spezifisch für displaytag. Es ist die standard-JSP-EL. Nach struts.apache.org/2.0.14/docs/ognl-basics.html, müssen Sie mit #attr['foobar'].rowId oder #attr.foobar.rowId
Die folgende Seite zeigt ein Beispiel: old.nabble.com/Struts-2---DisplayTag-example-td17694341.html. value="%{#attr.foobar.rowId}" funktionieren sollte. Sind Sie sicher, dass Sie einen getRowId() get-in den Bohnen enthalten in der Liste?
InformationsquelleAutor JB Nizet
Display-Tag verwendet Implizite Objekte speichern Sie die Nummer der Zeile. Hier ist ein Beispiel aus dem Display-Tag-Dokumentation:
So können Sie EL Zugriff auf die Nummer der Zeile das gespeichert ist, als eine automatisch erstellte Objekt. Sein name ist definiert durch Ihre
id
variable (in diesem Fallrow
) mit angehängt_rowNum
(in diesem Fall was in${row_rowNum}
).Sich bewusst sein, dass die Nummerierung bei 1 beginnt, nicht bei 0.
InformationsquelleAutor Shlomo Georg Konwisser