【问题标题】:JSP Input value To Java Method -> HttpServletRequest gives NULL valueJSP Input value To Java Method -> HttpServletRequest 给出 NULL 值
【发布时间】:2020-04-03 11:09:21
【问题描述】:

大家好。 我有一个简单的存储页面,它显示数据库中的所有产品。 我将 设置为每个具有 唯一名称 以更改 产品数量。 当我想在 Java 方法中捕获这个值时,它的 返回 null你能帮我在这个文本输入中正确地捕捉值吗?

控制器:

@Controller
public class StoragePageController extends HttpServlet {

    @GET
    @RequestMapping(value = "/storage/subamount/{id}")
    public String substractTheAmountValue(@PathVariable("id") int id, Model model, HttpServletRequest request) {

        String amount_req = request.getParameter("amount_sub_" + id);
        System.out.println(amount_req);

        return null;
    }
}

JSP 片段:

<c:set var="licznik" value="${recordStartCounter }" />
<div align="center">
    <table width="1000" border="0" cellpadding="6" cellspacing="2">
        <c:forEach var="u" items="${productList }">
            <c:set var="licznik" value="${licznik+1}" />
            <tr onmouseover="changeTrBg(this)" onmouseout="defaultTrBg(this)">
                <td align="right"><c:out value="${licznik }" /></td>
                <td align="left"><c:out value="${u.description }" /></td>
                <td align="left"><c:out value="${u.amount }" /></td>
                <td align="center"><input type="text" name="amount_sub_${licznik}" id="amount_sub_${licznik}"></td>
                <td align="center"><input type="button" value="Substract the value" onclick="window.location.href='${pageContext.request.contextPath}/storage/subamount/${licznik}'"/></td>
            </tr>
        </c:forEach>
    </table>

【问题讨论】:

    标签: java spring-boot jsp servlets


    【解决方案1】:

    鉴于您的 UI 正在将数据发布到您的 API/控制器(假设您使用的是最新版本的 Spring Boot),您应该拥有如下所示的 API 控制器。您有一个 @Get 映射,它不接受正文中的请求负载。

    @RestController
    public class StoragePageController  {
    
    @PostMapping(value = "/storage/subamount/{id}", produces = {"application/json"})
        public String substractTheAmountValue(@PathVariable("id") int id, Model model) {
    
            String amount_req = id;
            System.out.println(amount_req);
    
            return null;
        }
    }
    

    【讨论】:

    • 捕获“ID”对我来说很好,我无法在 syso(id) 中捕获值给我 f.e. 4、syso(amount_req) 给我null。
    • 你的输入应该有一个像&lt;input type='text' name='userName' value='' /&gt;这样的名字,你试过这样
    • 你也是将数据发布到控制器的 UI 吗?
    • 它是金额值 -> 整数,我需要从这个文本输入值中捕获,比如“1234”,不管会有什么。我需要正确地捕捉:P
    • 我认为您的 UI 正在遍历集合并呈现 HTML。在这种情况下,您必须在名称中使用[],以便将所有值作为关联数组发布。示例:&lt;input type="text" name="amount_sub_${licznik}" id="amount_sub[${licznik}]" /&gt;
    猜你喜欢
    • 2022-12-02
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    相关资源
    最近更新 更多