Struts2为arraylist对象字段问题使用iterator标记

时间:2012-08-22 21:19:04

标签: struts2

我正在开发一个项目,我在我的action类populate方法中将对象加载到ArrayList arrayDiary中。链接到此页面的页面具有URL“populateDiary.action”。我有公共吸气者和这个arrayList的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天,但没有成功。提前感谢您的帮助和反馈。

1 个答案:

答案 0 :(得分: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";
}