JSTL和Servlet中的单选按钮[复制]

问题描述 投票:0回答:1

我在JSP文件中有一些值,我将单选按钮推送到Servlet并输出它时出现问题。

输入文件在这个jsp中:

<label for="phone">Phone: </label>
    <input type="text" name="phone" id="phone" value="${phone}"><br/><br/>

    <input type="radio" name="sex" id="sex" value="${male}">Male
    <input type="radio" name="sex" id="sex" value="${female}"/>Female<br/><br/>

Servler在这里:public static RequestNewEmployee fromRequestParameters(HttpServletRequest request) { return new RequestNewEmployee( request.getParameter("firstName"), request.getParameter("lastName"), request.getParameter("email"), request.getParameter("phone"), request.getParameter("sex")); } public void setAsRequestAttributes(HttpServletRequest request) { request.setAttribute("firstName", firstName); request.setAttribute("lastName", lastName); request.setAttribute("email", email); request.setAttribute("phone", phone); request.setAttribute("sex", sex); }

但是,我没有在性领域接受过任何关注(通过所有其他工作正常)。可能是什么问题?

jsp servlets el
1个回答
-1
投票

理论 $ {}称为EL表达式。在里面你可以有变量。来自the oracle tutorial

Web容器通过根据PageContext.findAttribute(String)的行为查找其值来评估表达式中出现的变量。例如,在评估表达式$ {product}时,容器将在页面,请求,会话和应用程序范围中查找产品,并将返回其值。如果找不到产品,则返回null。与Implicit Objects中描述的隐式对象之一匹配的变量将返回该隐式对象而不是变量的值。


现在让我们谈谈你的问题。

  1. 你不能有两个具有相同ID的html标签。
  2. 你收到空参数,因为它显然是空的(未定义)。你在哪里定义malefemale变量?

我认为这是你想要实现的目标:

form.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/formServlet">
        <input type="radio" name="sex" id="sexChoice1" value="male">Male
        <input type="radio" name="sex" id="sexChoice2" value="female"/>Female<br/><br/>
        <input type="submit" value="submit">
    </form>
</body>
</html>

FormServlet

public class FormServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        System.out.println(req.getParameter("sex"));
    }
}

veb.hml

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>FormServlet</servlet-name>
        <servlet-class>com.artmal.controller.FormServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>FormServlet</servlet-name>
        <url-pattern>/formServlet</url-pattern>
    </servlet-mapping>
</web-app>

选择“男性”选项并提交后,控制台输出:

© www.soinside.com 2019 - 2024. All rights reserved.