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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL和Servlet中的单选按钮[复制]相关的知识,希望对你有一定的参考价值。

我在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); }

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

答案

理论 $ {}称为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>

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

以上是关于JSTL和Servlet中的单选按钮[复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 中的单选按钮发送值属性 [关闭]

如何更改我的代码以取消选中从 javascript 到 jQuery 的单选按钮? [复制]

使用 getElementsByName 获取选中的单选按钮值? [复制]

使用javascript获取选中的单选按钮的值[重复]

如何隐藏单选按钮列表中的单选按钮之一?

如何使用名称和类型验证 html 中的单选按钮