Struts 1.3 ActionForm - 从多选下拉列表中检索集合而不是使用数组

时间:2014-08-23 05:51:19

标签: java struct

我无法弄清楚如何从multielect中选择多个输入下拉到我的Action.By使用集合而不是array.I已经发布了jsp代码和actionform。

这是我的jsp:

<table class="table-striped" style="width: 100%;">
                                                <tr>
                                                    <th style="border: none;"><br><br><br><br><label class="control-label" >Grade</label></th>
                                                    <th style="border: none;">                                                        
                                                        <html:select name="GradeBoardConfigureForm" property="grade" multiple="">
                                                            <html:option value="">Grade List</html:option>
                                                            <html:optionsCollection  name="GradeBoardConfigureForm" property="gradelist" label="grade" value="gradeid"/>
                                                        </html:select>
                                                    </th>                         
                                                </tr>
                                            </table>

的FormBean:

public class GradeBoardConfigureForm extends ActionForm {

    private String board;
    private List grade;

    private List gradelist;
    private List boardlist;

    public String getBoard() {

        return board;
    }

    public void setBoard(String board) {
        this.board = board;
    }

    public List getGradelist() {
        gradelist = new ArrayList<>();
        DAOFactory factory = HibernateDAOUtil.getDAOFactory();
        GradeDao gradedao = factory.getGradeDao();
        List<Academicgradeform> gradedaolist = gradedao.list();
        gradelist.addAll(gradedaolist);
        return gradelist;
    }

    public void setGradelist(List gradelist) {
        this.gradelist = gradelist;
    }



    public List getBoardlist() {
        boardlist = new ArrayList<>();
        DAOFactory factory = HibernateDAOUtil.getDAOFactory();
        BoardDao boarddao = factory.getBoardDAO();
        List<Academicboardform> boarddaolist = boarddao.list();
        boardlist.addAll(boarddaolist);
        return boardlist;
    }

    public void setBoardlist(List boardlist) {
        this.boardlist = boardlist;
    }

    public List getGrade() {
        return grade;
    }

    public void setGrade(List grade) {
        this.grade = grade;
    }

}

1 个答案:

答案 0 :(得分:0)

据我所知,这不是直接可能的,并且不是 Struts1哲学。

表单bean应该只是一段有助于在控制器(单例,因此它是无状态)和视图之间传输数据的代码。它不是一个域对象。

所以你的GradeBoardConfigureForm就是你应该的好例子。你将DAO混合在一个表单bean中。它很难编写并且难以测试,并且会导致代码结构不良。你的问题在这里奠定了。如果您的域对象与表单bean不同,则域对象将具有List,并且DAO层可以将列表绑定到数据库。控制器(stuts1中的Action)将列表复制到表单bean中的Array,将其传递给视图,并且在提交阶段将根据您的需要使用填充的数组。

但我有3个强烈建议:

  • 不推荐使用Struts1(根据官方Apache Struts页面),除了维护现有代码外不要使用它 - Struts2或Spring MVC是当前的替代方案
  • 如果您是初学者,请先阅读现有教程
  • 在编码之前,仔细设计您的程序结构。如果您不明白我的意思,请阅读(再次,如果您已经查看过)此文档链接在Apache strus1页面的底部:Understanding JavaServer Pages Model 2 architecture.