ฉันประสบปัญหาในการพยายามดึงค่าจาก treeMap ที่มีอยู่มาระยะหนึ่งแล้ว ฉันได้ลองหลายวิธีในการเข้าถึงข้อมูล แต่วิธีที่ไกลที่สุดที่ฉันได้รับคือให้ JSP ยอมรับว่ามีแฮชหรือแผนผังต้นไม้ แต่ไม่ได้วนซ้ำและส่งคืนข้อมูลจริงๆ
ฉันพยายามค้นหาวิธีที่ดีที่สุดในการจัดเรียงผลลัพธ์ xml โดยพื้นฐานตามแอตทริบิวต์ tag ดังนั้นฉันจึงนำ xml และใส่ค่าของแต่ละรายการลงใน bean จากนั้นจึงนำถั่วไปวางในแผนผังต้นไม้โดยที่ Key=SortId เนื่องจาก treema เรียงลำดับผลลัพธ์โดยอัตโนมัติ จึงเป็นแผนผังที่เรียงลำดับของค่า XML จำนวนประชากรของ bean และ treeMap ทำงานได้ดี ปัญหาคือการดึงค่าเหล่านั้นออกมาใน JSP
บางทีการแสดงแผนที่ผลลัพธ์ของฉันให้ดีขึ้นอาจช่วยอย่างน้อยให้เข้าใจถึงสิ่งที่ฉันพยายามจะได้ เป้าหมายคือการวนซ้ำรายการที่เรียงลำดับใหม่และเติม div ของฉันด้วยสิ่งที่ต้องการ
<div>
Name: ${tileName} <br />
Description: ${tileDescrip} <br />
<img scr="${imagePath}">
</div>
แผนที่ต้นไม้ที่ได้จะมีลักษณะเช่นนี้
เรียงลำดับแฮช
{0, bean(tileName,tiledescrip,imagePath)}
{1, bean(tileName,tiledescrip,imagePath)}
{2, bean(tileName,tiledescrip,imagePath)}
ปัญหาของฉันคือด้วยโค้ดด้านบน ฉันไม่ได้รับค่าใด ๆ ที่ส่งคืนจากการวนซ้ำระดับแรกของแผนที่ แม้ว่าการส่งออกแผนที่จะแสดงอยู่ที่นั่นที่
sortedHash = CTTeamsiteXMLHash@135b24b
ดังนั้นกระแสหลอกของสิ่งที่ฉันทำ
Read XML
- Iterate
-Parse XML Values to bean
-Place bean in Treemap<SortId, XML-Bean>
-Return TreeMap
-Loop through treemap and then pull each bean value out.
นี่คือตัวอย่าง XML
<teaser>
<sort>1</sort>
<value1></value1>
<value2></value2>
</teaser>
องค์ประกอบของฉัน
public class CTTeamsiteXMLHash {
private HashMap<String, Object> xmlHash;
private TreeMap<String, Object> sortedHash;
public TreeMap<String, Object> getSortedHash() {
return sortedHash;
}
public void setSortedHash(TreeMap<String, Object> sortedHash) {
this.sortedHash = sortedHash;
}
public void setXmlHash(String sortOrder, CTTeamsiteXMLBean bean) {
getXmlHash().put(sortOrder, bean);
}
public HashMap<String, Object> getXmlHash() {
return xmlHash;
}
นี่คือความพยายามที่ล้มเหลวของฉันในการเข้าถึงจาก JSP ถ้ามันช่วยได้ ฉันจะส่ง sortedHash ในคำขอด้วย
<jsp:useBean id="sortedHash" class="CTTeamsiteXMLHash"
scope="request"/>
<c:forEach items="${sortedHash.sortedHash}"
var="eachItem">
<c:forEach items="${eachItem.value}"
var="anItem">
<c:out value="${anItem.tileName.value}" /> :
<c:out
value="${anItem.tileDescrip.value}" />
</c:forEach>
</c:forEach>
for
loop เป็นต้น วิธีนี้ทำให้แปลเป็นแนวทาง JSTL ได้ง่ายขึ้น - person BalusC   schedule 13.12.2010