0

我正在做一个项目,我在我的操作类填充方法中将对象加载到 ArrayList arrayDiary 中。链接到该页面的页面的 URL 为“populateDiary.action”。我有这个arrayList的公共getter和setter,我可以看到populate方法被调用并且arrayList确实包含值。

我的问题是,当我尝试使用 STRUTS 迭代器标记填充 li 时,我在屏幕上看不到任何内容。我已经阅读了几篇关于此的帖子,据我所知,它们已经完全复制了它们——但是我没有在屏幕上看到我的结果。这是我的 diary.jsp 代码:

<s:iterator value="arrayDiary" status="pos" id="res">
<li onclick="$('#eventList').toggleClass('eventList'); $('#eventDesc').toggleClass('eventDesc'); $('.active').toggleClass('active'); $(this).toggleClass('active');"><a href="#"><s:property value="#res.title"/></a></li>
</s:iterator>

这是我的动作类代码:

private ArrayList<DiaryEntry> arrayDiary;
private ArrayList<DiaryEntry> arrayEvent;

public String populate() {
    ArrayList<DiaryEntry> arrayEvent = new ArrayList<DiaryEntry>();
    ArrayList<DiaryEntry> arrayDiary = new ArrayList<DiaryEntry>();
    DiaryEntry load = new DiaryEntry();
    username = (String) ActionContext.getContext().getSession().get("username");
    loginId = (String) ActionContext.getContext().getSession().get("loginId");
    ArrayList<DiaryEntry> diaryEntry = load.loadDiaryEntry(username, loginId);
    for (DiaryEntry entry:diaryEntry) {
        if(entry.getEvent() == null) {
            arrayDiary.add(entry);
        }
        else {
            arrayEvent.add(entry);
        }
    }
    return "populate";
}

public ArrayList<DiaryEntry> getArrayDiary() {
    return arrayDiary;
}

public void setArrayDiary(ArrayList<DiaryEntry> arrayDiary) {
    this.arrayDiary = arrayDiary;
}

public ArrayList<DiaryEntry> getArrayEvent() {
    return arrayEvent;
}

public void setArrayEvent(ArrayList<DiaryEntry> arrayEvent) {
    this.arrayEvent = arrayEvent;
}

这是我的 struts.xml:

<action name="*Diary" method="{1}" class="spirit.DiaryAction">
    <result name="populate">/diary.jsp</result>
    <result name="input">/diary.jsp</result>
    <result name="success">/diary.jsp</result>
</action>

如果有人能发现我出错的地方,我将不胜感激。我已经在这个问题上工作了 2 天,但没有成功。提前感谢您的帮助和反馈。

4

1 回答 1

1

在你的动作类中有一个明显ERROR的,你已经在你的类和你的方法中定义了,你的方法arrayDiary肯定没有发生任何事情arrayEventpopulate()<s:iterator>

请像这样更改您的方法populate()

public String populate() {
    arrayEvent = new ArrayList<DiaryEntry>();
    arrayDiary = new ArrayList<DiaryEntry>();
    DiaryEntry load = new DiaryEntry();
    username = (String) ActionContext.getContext().getSession().get("username");
    loginId = (String) ActionContext.getContext().getSession().get("loginId");
    ArrayList<DiaryEntry> diaryEntry = load.loadDiaryEntry(username, loginId);
    for (DiaryEntry entry:diaryEntry) {
        if(entry.getEvent() == null) {
            arrayDiary.add(entry);
        }
        else {
            arrayEvent.add(entry);
        }
    }
    return "populate";
}
于 2012-08-22T21:48:40.073 回答