首先,如果您涉及我最近的問題,請致歉。由於這不是討論論壇,評論有限,我最後的希望是用實際的代碼問一個具體的問題,希望能以某種方式達到我的問題的底部。在JSF中支持bean String []訪問
好的。我有一個後端bean稱爲PrismBacking與此相關的代碼:
public class PrismBacking {
private ArrayList dataList;
public ArrayList<String> getFeedDataList() {
XMLHandler xmlh = new XMLHandler();
dataList = new ArrayList();
Document doc = xmlh.getDoc(map); // catches removed
// get all the feedNames from the doc, and the feedIds
String[] FeedIds = xmlh.getXMLList("//feed/feed_id/text()");
for (String feedId : FeedIds) {
TaskListData tld = new TaskListData();
tld.setFeedId(feedId);
String feedName = xmlh.getValue("//feed[feed_id='" + feedId +"']" +"/feedname/text()");
tld.setFeedName(feedName);
String[] FTQs = xmlh.getList("//feed[feed_id='" + feedId +"']" +"/ftq/ftq_id/text()");
for (String ftqId : FTQs) {
logger.info("FTQ: " + ftqId);
}
tld.setFTQs(FTQs);
dataList.add(tld);
}
setFeedDataListSize(dataList.size());
return dataList;
}
在課堂TaskListData,
public class TaskListData {
private String feedId;
private String feedName;
private String[] FTQar;
public String getFeedId() {
return feedId;
}
public void setFeedId(String f) {
feedId = f;
}
public String getFeedName() {
return feedName;
}
public void setFeedName(String fn) {
feedName = fn;
}
public String[] getFTQs() {
return FTQar;
}
public void setFTQs(String[] ftqs) {
FTQar = ftqs;
}
}
所以我有我的getter和setter方法設置,我的XPath都好。在我的index.jsp jsf文件中:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<!-- RichFaces tag library declaration -->
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<!-- JSTL XML lib declaration -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- error redirect -->
<f:view>
<rich:page pageTitle="mypage" markupType="xhtml">
<h:dataTable id="dt1" value="#{PrismBacking.feedDataList}" var="item"
border="10" cellpadding="5" cellspacing="3" first="0"
rows="#{PrismBacking.feedDataListSize}" width="50%" dir="LTR"
frame="hsides" rules="all"
summary="This is a JSF code to create dataTable.">
<f:facet name="header">
<h:outputText value="This is 'dataTable' demo" />
</f:facet>
<h:column>
<f:facet name="header">
<h:outputText value="id" />
</f:facet>
<h:outputText value="|#{item.feedId}|"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="name" />
</f:facet>
<h:outputText value="|#{item.feedName}|"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="ftqs" />
</f:facet>
<c:forEach items="#{item.FTQs}" var="jef">
<h:outputText value="|#{jef}|" />
<br />
</c:forEach>
</h:column>
</h:dataTable>
<h:outputText value="" />
</rich:page>
</f:view>
好吧,這個編譯好,運行正常,沒有錯誤。我從logger.info線看到PrismBacking:
|STDOUT| 2010-01-28 00:02:48,960 | INFO | [http-8989-1]: feedId: 1 | feedSwitch: on | feedName: FEED1
|STDOUT| 2010-01-28 00:02:48,991 | INFO | [http-8989-1]: FTQ: 1
|STDOUT| 2010-01-28 00:02:48,991 | INFO | [http-8989-1]: feedId: 2 | feedSwitch: on | feedName: FEED2
|STDOUT| 2010-01-28 00:02:48,991 | INFO | [http-8989-1]: FTQ: 1
|STDOUT| 2010-01-28 00:02:48,991 | INFO | [http-8989-1]: feedId: 3 | feedSwitch: on | feedName: FEED3
|STDOUT| 2010-01-28 00:02:48,991 | INFO | [http-8989-1]: FTQ: 1
|STDOUT| 2010-01-28 00:02:49,007 | INFO | [http-8989-1]: feedId: 4 | feedSwitch: on | feedName: FEED4
|STDOUT| 2010-01-28 00:02:49,007 | INFO | [http-8989-1]: feedId: 5 | feedSwitch: off | feedName: FEED5
|STDOUT| 2010-01-28 00:02:49,023 | INFO | [http-8989-1]: feedId: 6 | feedSwitch: on | feedName: FEED6
|STDOUT| 2010-01-28 00:02:49,038 | INFO | [http-8989-1]: feedId: 7 | feedSwitch: on | feedName: FEED7
,所以我知道我有飼料1-3應有的FTQ數字1,在我的數據表。在渲染頁面上,我看到這個
This is 'dataTable' demo
id name ftqs
|1| |FEED1| ||
|2| |FEED2| ||
|3| |FEED3| ||
|4| |FEED4| ||
|5| |FEED5| ||
|6| |FEED6| ||
|7| |FEED7| ||
我不喜歡gro。。我也無法忍受長篇文章,但是我在一個沒有人知道這些技術的環境中工作,堆棧溢出是我發現問這些問題的唯一和最好的地方。正如我的智慧結束,我希望你不要介意額外的帖子長度。
然後我的問題是從上面的代碼需要更改以獲取TaskListData String []成員FTQar可訪問?在這個階段,我會誠實地說,我希望有人可以發佈我的代碼修改後的代碼片段,顯示我出錯的地方。如果這取決於我,你會得到比正常情況更多的正確答案。
真是太感謝您 馬克
我試過''標籤,它會導致我的瀏覽器掛起。我和其他richfaces標籤有同樣的問題,但這是另一回事。 –
volvox
2010-01-28 00:56:31
這似乎不太可能。你是否重複了一個無限循環? – Naganalf 2010-01-28 01:05:22
不,我有控制檯輸出的內容(上面列出)顯示它應該只有3個條目。不過,我想知道,因爲我試圖輸出7個行值的行,對於其中一些沒有條目的Ftq數組,這會導致問題嗎?我需要在這種情況下填充String [] Ftqs嗎? – volvox 2010-01-28 12:37:39