1

ドロップダウン リストのオプションとしてデータベース データを入力しています

<select name="AccountType">
                    <option value = "1">Please Select</option>
                        <c:forEach items="${UserItem}" var="AccountType">
                            <option value="${AccountType.getRoleId()}">${AccountType.getRoleName()}</option>
                        </c:forEach>
                    </select>

<%
                                if (errors.containsKey("AccountType"))
                                {
                                    out.println("<span class=\"warning\">" + errors.get("AccountType") + "</span>");
                                }
                            %>

私のサーブレットでは、コードは次のとおりです

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException
    {

        logger.debug("Add User page requested");
        List<User> UserItems = new UserDAO().RoleTypeList();
        req.setAttribute("UserItem", UserItems);
        jsp.forward(req, resp);
    }

ユーザーがドロップダウンリストで最初のオプション(選択してください)を選択するのを忘れたかどうかを判断するために、このコードを試しました

long AccountType = Integer.parseInt(req.getParameter("AccountType"));
        if ("1".equals(AccountType))
        {
            errors.put("AccountType", "Required");
        }
        else if (req.getParameter("AccountType") != null && !"".equals(req.getParameter("AccountType")))
        {
            long RoleId = Integer.parseInt(req.getParameter("AccountType"));
            emsItem.setRoleId(RoleId);
        }

送信ボタンをクリックしても何も起こりませんでした。また、ドロップダウン リストの項目がなくなったので、ページに戻る必要があります。どうすればこれを解決できますか?

4

1 に答える 1

1

問題は次の 2 行にあります。

long AccountType = Integer.parseInt(req.getParameter("AccountType"));
if ("1".equals(AccountType))

Integer.parseInt()int を返します。なぜあなたはそれをロングに保存していますか?次に、この long を取得したら、 long が String と等しいかどうかをテストします"1"。long が String と等しくなることはありません。同じ型でさえないからです。

どちらかを使用

int accountType = Integer.parseInt(req.getParameter("AccountType"));
if (accountType == 1)

また

String accountType = req.getParameter("AccountType");
if ("1".equals(accountType))

また、Java の命名規則を尊重してください。変数は小文字で始まります。

于 2013-01-30T14:11:52.130 に答える