ArrayList в Struts 1 ActionForm не заполняется - PullRequest
1 голос
/ 20 июля 2011

У меня есть ActionForm (RevisionActionForm), который я заполняю из DB2 и показываю на странице. Эта форма имеет различные поля и класс, который содержит несколько других классов и ArrayList s. Страница загружается нормально, и все отображается так, как я ожидал, однако, когда страница отправлена, форма больше не имеет элементов ArrayList (все остальные поля загружаются как положено). Я предполагаю, что проблема связана с тем фактом, что ArrayList построен, но не существует элементов для значений, которые будут сохранены. Ниже приведены соответствующие сегменты кода (я опустил то, что я считаю неуместным, чтобы уменьшить это почта).

1007 * JSP *

<logic:notEmpty name="revisionBean" property="revisionData.reasonsData">
    <div>
        &nbsp;
    </div>
    <div style="vertical-align: top; text-align: left; font-size: 15px">
        <strong> 604 Information </strong>
    </div>
    <logic:iterate id="reqReas" name="revisionBean" property="revisionData.reasonsData" indexId="reqReasIdx">
        <div>
            <ao:text name="reqReas" property="reasonCodeId" indexed="true" 
                     label="Reason Code ID ${reqReasIdx+1}: " 
                     size="5" maxlength="5" disabled="true"/>
        </div>
        <div>
            <ao:text name="reqReas" property="priorityOrNum" indexed="true"
                     label="Priority Or Num ${reqReasIdx+1}: "
                     size="2" maxlength="2" disabled="true"/>
        </div>
    </logic:iterate>
</logic:notEmpty>

ActionForm

public class RevisionActionForm extends BaseActionForm{

    /**
     * Transfer object for the Revision information.
     */
    private RevisionTO revisionData = new RevisionTO();

    public RevisionActionForm() {   
    }

    public RevisionTO getRevisionData(){
        return revisionData;
    }

    public void setRevisionData(RevisionTO revisionData){
        this.revisionData = revisionData;
    }   
}

RevisionTO (содержит ArrayList)

public class RevisionTO implements Serializable {

    private ArrayList<RevisionReasonsTO> reasonsData = new ArrayList<RevisionReasonsTO>();

    public RevisionTO() {   
    }

    public ArrayList<RevisionReasonsTO> getReasonsData() {
        return reasonsData;
    }

    public RevisionReasonsTO getReasonData(int index) {
        if (reasonsData == null) {
            reasonsData = new ArrayList<RevisionReasonsTO>();
        }
        while (index >= reasonsData.size()) {
            reasonsData.add(new RevisionReasonsTO());
        }
        return reasonsData.get(index);
    }

    public void setReasonsData(ArrayList<RevisionReasonsTO> reasonsData) {
        this.reasonsData = reasonsData;
    }   
}

Действие Открытый класс RevisionAction расширяет действие {

    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request, HttpServletResponse response) throws Exception{

        ActionForward forward = new ActionForward();
        HttpSession session = request.getSession(false);
        RevisionActionForm revisionForm = (RevisionActionForm) form;
}

Я проводил исследования в сети и экспериментировал на прошлой неделе безуспешно. Я прошу прощения, если это очевидно, но я немного заржавел на Java и плохо знаком с Struts. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 02 ноября 2011

Измените getReasonData(int index) и setReasonsData(ArrayList<RevisionReasonsTO> reasonsData) на getReqReas(....) и setReqReas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...