Dalam file Action.java, saya menggunakan potongan kode berikut.
request.setAttribute("TAREWEIGHT", tareWeightList);
request.setAttribute("BARCODE", barcodeList);
return (mapping.findForward(target));
tareWeightList &; barcodeList sebenarnya memegang beberapa nilai. Setelah mengatur nilai daftar ke atribut, file java meneruskan isinya ke file JSP.
Di sana, di file JSP, saya bisa mendapatkan isinya dengan menggunakan baris-baris di bawah ini,
<%=request.getAttribute("TAREWEIGHT")%>
<%=request.getAttribute("BARCODE") %>
Kebutuhan saya adalah bahwa isi dari daftar tersebut harus ditampilkan dalam format tabel.
Nilai barcode di kolom pertama dan nilai Tareweight yang sesuai di kolom kedua.
Sarankan saya ide untuk menulis kode dalam file JSP sehingga isinya ditampilkan dalam format tabulasi.
Gunakan elemen HTML <table>
untuk merepresentasikan tabel dalam HTML. Gunakan JSTL &<c:forEach>
untuk mengiterasi sebuah daftar di JSP.
Contoh
<-- bahasa: xhtml -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<table>
<c:forEach items="${list}" var="item">
<tr>
<td><c:out value="${item}" /></td>
</tr>
</c:forEach>
</table>
Anda hanya memiliki cacat desain dalam kode Anda. Anda telah membagi data terkait ke dalam 2 daftar independen. Ini akan membuat pendekatan akhir sejelek
<table>
<c:forEach items="${TAREWEIGHT}" var="tareWeight" varStatus="loop">
<c:set var="barCode" value="${BARCODE[loop.index]}" />
<tr>
<td><c:out value="${tareWeight}" /></td>
<td><c:out value="${barCode}" /></td>
</tr>
</c:forEach>
</table>
Saya sarankan untuk membuat kelas khusus untuk menyatukan data terkait. Contoh
public class Product {
private BigDecimal tareWeight;
private String barCode;
// Add/autogenerate getters/setters/equals/hashcode and other boilerplate.
}
sehingga Anda berakhir dengan Daftar<Produk>
yang dapat direpresentasikan sebagai berikut:
<table>
<c:forEach items="${products}" var="product">
<tr>
<td><c:out value="${product.tareWeight}" /></td>
<td><c:out value="${product.barCode}" /></td>
</tr>
</c:forEach>
</table>
setelah memasukkannya ke dalam lingkup permintaan sebagai berikut:
request.setAttribute("products", products);
Pertama-tama, Anda tidak boleh menggunakan scriptlet di JSP. Gunakan JSTL, tag JSP kustom lainnya, dan bahasa ekspresi.
Kedua: inti dari kerangka kerja MVC adalah untuk membuat action menyiapkan model untuk view, yang seharusnya tetap sangat sederhana. Anda mungkin harus membuat action membuat satu daftar objek, masing-masing berisi field dari barcode dan tareweight yang sesuai. Dengan cara ini, Anda hanya akan memiliki satu iterasi dalam JSP Anda.
Dengan demikian, kodenya akan menjadi sangat sederhana:
<c:forEach var="barCodeAndTareWeight" items="BARCODE_AND_TAREWEIGHTS">
<tr>
<td><c:out value="${barCodeAndTareWeight}.someField"/></td>
<td><c:out value="${barCodeAndTareWeight}.someOtherField"/></td>
</tr>
</c:forEach>
Perhatikan bahwa ada tag khusus untuk menampilkan tabel, mendukung penyortiran, paging, dll. Saya suka menggunakan displaytag.