JSP列表框和Servlet

时间:2010-12-08 10:44:18

标签: jsp servlets

在我的应用程序中,我使用2个列表框,我想将所选项目从一个移动到另一个。我知道要从数据库中为列表框分配值。但我不知道如何将java文件中的字符串数组值分配给html字段。在我的'record.java'中,我有以下代码:

public class Report 
{
    private static String[] types = {
        "Value1",
        "Value2"
    };

    private static String[] fields = {
        "number1",
        "number2"
    };

    public static String[] getList() {
        return types;
    }

    public static String getFieldName(String description) {
        for(int i=0; i< fields.length; i++) {
            if (description.compareToIgnoreCase(types[i]) ==0)
                return fields[i];
        }
        return "";
    }
}

我的'chart.jsp'文件如下:

<form  method="post">
            <fieldset>
                <legend>Chart Data</legend>
                <br/>
                <br/>
                <table >
                    <tbody>
                        <tr>
                            <td>
                              <select name="data" size="5" id="s">
                                 <option value=""></option>
                              </select>
                            </td>
                            <td> 
                                <input type="submit" value="<<"/>
                            </td>
                            <td>
                                <select name="data" size="5" id="d">
                                 <option value=""></option>
                                </select></td>
                         </tr>
                    </tbody>
                </table>
                <br/>
            </fieldset>
            <input class="submit" type="submit" value="Submit" />
        </form>

我是JSP的新手。任何人都可以帮我怎么做? 谢谢....

1 个答案:

答案 0 :(得分:4)

getter方法不应该是静态的:

public String[] getList() {
    return types;
}

Report的实例应该放在servlet的doGet()方法的请求范围中:

Report report = loadItSomehow();
request.setAttribute("report", report);
request.getRequestDispatcher("page.jsp").forward(request, response);

通过这种方式,它将在JSP EL中以${report}的形式提供,列表以${report.list}的形式提供。您可以使用JSTL c:forEach迭代数组或List

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<select name="types" size="5">
    <c:forEach items="${report.list}" var="type">
        <option value="${type}">${type}</option>
    </c:forEach>
</select>

请注意,您不应该为独立的输入元素指定相同的名称。