やるべきタスクがあり、応答オブジェクトで返されたデータを取得する必要があり、それを 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";
}
}
これは、オブジェクトがどのように構築されるかを示しています。私がやりたいのは、「WordPageList」リストではなく、「response」オブジェクトを直接 JSP に渡すことです。
このオブジェクトを直接渡す方法はありますか? 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>
これは、私が望むものには実際には機能しません。同様のことをしたいのですが、「応答」オブジェクトを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;
}
}
}