【问题标题】:why doesnt my jsp request.getParameter() get the data?为什么我的jsp request.getParameter() 没有得到数据?
【发布时间】:2011-11-27 04:04:21
【问题描述】:

我创建了一个表单,用户将在其中选中复选框、选择单选按钮和 1.jsp 中的下拉菜单...

我想使用来自 1.jsp 的信息来确定 2.jsp 的输出...

用于 1.jsp 的 jsfiddle:http://jsfiddle.net/VWczQ/

action="/2.jsp">

现在在 2.jsp 我有这个:

<% if(request.getParameter("extra") != null) { %>           
    <page:cmsElement id="cmsContent" name="/otcmarkets/traderAndBroker/market-data-vendors/wizard-results" />
<% } else if(request.getParameter("all") != null) { %>
    <page:cmsElement id="cmsContent" name="/otcmarkets/traderAndBroker/market-data-vendors/con-all" />
<% } else { %>
    <h1>holy crap everything is null!!!</h1>
<% } %>

当我从表单中随机选择选项时,一切都是 NULL...

我做错了什么?!?

【问题讨论】:

    标签: html forms jsp


    【解决方案1】:

    您似乎期望 HTML 输入元素的 id 属性作为请求参数名称发送。这是错误的。它是作为请求参数名称发送的name 属性。然后它的值就是在命名输入元素上设置的value 属性。

    所以,而不是例如您的错误检查

    if(request.getParameter("extra") != null) {
        // ...
    }
    

    用于以下单选按钮

    <input type="radio" name="choice" value="extranet" id="extra"/>
    

    您需要通过名称choice获取参数并测试其值是否为extranet。

    if ("extranet".equals(request.getParameter("choice"))) {
        // ...
    }
    

    至于all 复选框,我很困惑。可以发送 both 值,但您在 if-else 中检查它们。 all 不应该在同一个单选按钮组内吗?你不应该删除else 吗?无论如何,这一点应该是清楚的。它是作为请求参数名称发送的输入元素的 name 属性,而不是 id 属性。

    【讨论】:

    • oi 看到我应该检查“名称”并获取“值”而不是“id”......“全部”是我将使用的复选框。谢谢 Balus!
    • 是的,我明白这一点,但是您在 JSP 中的逻辑流程可能会导致最终用户无法预料/不直观的响应。例如。如果最终用户选中两个“额外”单选按钮和“全部”复选框,则最终用户将只能获得“额外”页面,而不是“全部”页面。
    • 检查 (request.getParameter("name")!=null) 是否有效?我正在尝试,但它仍然给我 null .. 至于选择,它们将根据用户的选择被禁用,如果用户点击“额外”,那么 3-5 复选框将被禁用等等..
    • 只有参数没有发送或者请求被重定向时才会为null。使用像 Firebug 或 Fiddler 这样的 HTTP 流量跟踪工具来跟踪流量。使用request.getParameterMap() 查看/调试所有参数。
    • 我需要某种 servlet 来执行此操作吗?或者我可以只设置 2 个 jsp 页面并将数据从一个页面发送到另一个页面?
    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多