gpt4 book ai didi

java - JSP 和 Java - 使用 jslt forEach 在 JSP 中显示数据 - 如何访问较低的元素

转载 作者:行者123 更新时间:2023-12-01 15:19:31 24 4
gpt4 key购买 nike

我有一个任务要做,我需要获取响应对象中返回的数据,并将其发送到 JSP。我需要做的是将其呈现在我使用 javascript 和 jquery 创建的菜单列表中 - (效果很好,它只需要数据)。

我正在使用 Spring,这是我的 Java 代码 - 这显示了对象:

@Controller
public class WordListController {

/* @version $Revision: $ $Date: $ */

@Autowired
private FrontendServiceFacade FrontendServiceFacade;

private final Logger logger = Logger.getLogger(this.getClass());

@RequestMapping("/ViewWords")
public String WordListRequestController(Model model) {

WordListRequest request = new WordListRequest();
WordListResponse response;

request.setLibraryId("LIB_CODE_1");

try{
response = (WordListResponse)FrontendFacade.getWordList(request);
}catch(Exception e){
//TODO Process Exception
e.printStackTrace();
return null;
}

List<UserBooksType.Book> returnedWordBooks = null;
List<UserBookPagesType.Page> returnedWordPages = null;
List<WordsType.Word> returnedWords = null;
List<WordPageList> WordPageList= new ArrayList<WordPageList>();

int bookSize = 0;
int pageSize = 0;
int wordSize = 0;
String bookId = "";
String pageName = "";
String wordId = "";

returnedWordBooks = response.getDataLoad().getUserBooks().getBook();
bookSize = response.getPayLoad().getUserBooks().getBook().size();

WordPagesList wordPagesList = new WordPagesList();

ArrayList<BookList> bookList = new ArrayList<BookList>();
ArrayList<PageList> pageList = new ArrayList<PageList>();
ArrayList<WordList> wordList = new ArrayList<WordList>();

// Loop <Book>
for (UserBooksType.Book book : returnedWordBooks) {
System.out.println("Book Loop");

bookId = book.getBookId();

// *********************************************
BookList bookL = new BookList();
bookL.setBookId(bookId);
// *********************************************

returnedWordPages = book.getUserBookPages().getPage();
pageSize = book.getUserBookPages().getPage().size();

// Loop <Pages>
for (UserBookPagesType.Page page : returnedWordPages) {

pageName = page.getName();

returnedWords = page.getWords().getWord();
wordSize = page.getWords().getWord().size();

// Loop <Word>
for (WordsType.Word word : returnedWords) {
System.out.println("Word Loop");

wordId = word.getWordId();

WordPageList WordPage = new WordPageList();

WordPage.setBookId(bookId);
WordPage.setPageName(pageName);
WordPage.setWordId(wordId);

WordPageList.add(WordPage);

}

}
}
// model.addAttribute("ViewWords", WordPageList); // I dont want to pass
model.addAttribute("ViewWords", response); // I want to pass this
return "ViewWords";
}

}

这显示了对象是如何构建的。我想做的是将“response”对象直接传递给JSP,而不是“WordPageList”列表。

有没有办法可以直接传递这个对象,然后它们在 JSP 上循环访问该对象。

这是我的 JSP 代码:

<li ><span class="folder">Books</span>
<ul>
<c:forEach items="${ViewBooks}" var="WordPageList" varStatus="status">
<li class="closed"><span class="folder">${WordPageList.bookId}</span>
<ul>
<li class="closed"><span class="folder">${WordPageList.PageName}<br /></span>
<ul>
<li class="closed"><span class="folder">${WordPageList.wordId}<br /></span>
<ul>
<li><span class="file">Option 1</span></li>
<li><span class="file">Optoin 2</span></li>
<li><span class="file">Option 3</span></li>
<li><span class="file">Option 4</span></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</c:forEach>
</ul>
</li>

这并不能真正达到我想要的效果。我想做类似的事情,但是将“response”对象传递给JSP,然后循环通过这个对象来呈现数据,所以我认为这是使用嵌套的foreach语句,但我不知道如何做到这一点,或者如何评估这些观点。

我希望这是有道理的。

编辑:

这是请求的 WordListResponse 类:

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"responseStatus",
"errorNumber",
"errorDescription",
"data"
})
@XmlRootElement(name = "WordListResponse")
public class WordListResponse {

protected int responseStatus;
protected int errorNumber;
@XmlElement(required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
protected String errorDescription;
@XmlElement(required = true)
protected WordListResponse.Data data;

/**
* Gets the value of the responseStatus property.
*
*/
public int getResponseStatus() {
return responseStatus;
}

/**
* Sets the value of the responseStatus property.
*
*/
public void setResponseStatus(int value) {
this.responseStatus = value;
}

/**
* Gets the value of the errorNumber property.
*
*/
public int getErrorNumber() {
return errorNumber;
}

/**
* Sets the value of the errorNumber property.
*
*/
public void setErrorNumber(int value) {
this.errorNumber = value;
}

/**
* Gets the value of the errorDescription property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getErrorDescription() {
return errorDescription;
}

/**
* Sets the value of the errorDescription property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setErrorDescription(String value) {
this.errorDescription = value;
}

/**
* Gets the value of the data property.
*
* @return
* possible object is
* {@link WordListResponse.Data }
*
*/
public WordListResponse.Data getData() {
return data;
}

/**
* Sets the value of the data property.
*
* @param value
* allowed object is
* {@link WordListResponse.Data }
*
*/
public void setData(WordListResponse.Data value) {
this.data = value;
}


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"userBooks"
})
public static class Data {

@XmlElement(required = true)
protected UserBooksType userBooks;

/**
* Gets the value of the userBooks property.
*
* @return
* possible object is
* {@link UserBooksType }
*
*/
public UserBooksType getUserBooks() {
return userBooks;
}

/**
* Sets the value of the userBooks property.
*
* @param value
* allowed object is
* {@link UserBooksType }
*
*/
public void setUserBooks(UserBooksType value) {
this.userBooks = value;
}

}

}

最佳答案

嵌套的 forEach 与非嵌套的 forEach 完全一样:

<%-- iterate over the someList field of the someObject attribute --%>
<c:forEach var="outerItem" items="${someObject.someList}">
<%-- now, outerItem is an attribute, and you may access its fields --%>

<%-- iterate over the otherList field of the outerItem attribute --%>
<c:forEach var="innerItem" items="${outerItem.otherList}">

<%-- now, innerItem is an attribute, and you may access its fields --%>

</c:forEach>

</c:forEach>

上面假设Spring Controller 在someObject属性中存储了一个具有以下结构的对象:

 class Xxx {
public List<Yyy> getSomeList() {
...
}
}

class Yyy {
public List<Zzz> getOtherList() {
...
}
}

关于java - JSP 和 Java - 使用 jslt forEach 在 JSP 中显示数据 - 如何访问较低的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11154897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com