최근에 발생한 질문에 사과드립니다. 이것은 토론 포럼이 아니며 주석이 제한되어 있으므로 마지막 질문은 실제 코드로 특정 질문을하여 어떻게 든 내 문제의 근원에 도달 할 수 있기를 바랍니다.JSF에서 Backing Bean String []
확인. 클래스 TaskListData에서
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;
}
,
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는 모든 좋은 : 나는이 관련 코드 PrismBacking라는 백업 콩을했습니다. 내 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>
이 항목은 정상적으로 컴파일되며 오류없이 정상적으로 실행됩니다. 나는 PrismBacking에 logger.info 라인에서 볼 :
|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
그래서 난 내 데이터 테이블에서의 FTQ 번호 1을 가져야한다 피드 1-3을 알고있다. 페이지 렌더링시이 부분을 보았습니다.
This is 'dataTable' demo
id name ftqs
|1| |FEED1| ||
|2| |FEED2| ||
|3| |FEED3| ||
|4| |FEED4| ||
|5| |FEED5| ||
|6| |FEED6| ||
|7| |FEED7| ||
나는 groveling을 좋아하지 않습니다. 긴 게시물을 가질 수는 없지만 이러한 기술에 대해 잘 아는 사람이 없으며 스택 오버플로가 이러한 질문을하는 유일한 곳이기도합니다. 내가 지혜롭게 끝날 때, 나는 여분의 게시물 길이에 신경 쓰지 않기를 바란다.
내 질문에 다음 위 코드에서 TaskListData String [] 멤버 FTQar에 액세스 할 수있게 변경해야합니까? 이 단계에서 나는 솔직하게 말하면 누군가가 내 코드를 수정 한 스 니펫을 게시하여 내가 잘못 나온 곳을 알려줄 것이라고 기대한다고 말한다. 그것이 내게 달린 것이라면, 옳은 대답에 대한 평소보다 많은 점수를 얻게 될 것입니다.
많은 감사 실제로 마크
''태그를 시도했는데 브라우저가 멈 춥니 다. 나는 다른 richfaces 태그들과 같은 문제가 있었지만 그것은 또 다른 이야기이다. –
volvox
그럴 것 같지 않습니다. 무한 루프 반복하셨습니까? – Naganalf
아니요, 콘솔에 3 개의 항목 만 있어야한다는 내용의 출력 (위의 목록)이 있습니다. 내가 7 행의 가치가있는 피드를 출력하려했는데, Ftq 배열에 항목이 없기 때문에 문제가 발생했는지 궁금했다. 이 경우에 String [] Ftqs를 채워야합니까? – volvox