繁体   English   中英

Spring 中如何将表单中的输入 id 中的数据发送到 RequestMapping 和 PathVariable?

[英]How to send data from input id in Form to RequestMapping and PathVariable in Spring?

我在发送请求时使用 Spring 解析数据 Json,并通过参数 mobilePhoneNumber 查找电话号码。 我想在文本框中输入电话号码,并提交数据并通过 PathVariable 参数发送到控制器以在 JSON 数据中搜索电话号码:

这是我的格式 json 请求:

{
  "sessionKey": "2022111723",
  "fiCode": "B100000022",
  "code": "0011524",
  "appNumber": "APPL000000000000999",
  "customerNumber": "12345678",
  "mobilePhoneNumber": "0988567896"
}

这是我在 JSP 中的代码:

<form id="insBasicForm" name="insBasicForm" action="${pageContext.request.contextPath}/api/v1/checkPhoneNumber/$mobilePhoneNumber" method="POST">
    <input type="text" id="mobilePhoneNumber" name="mobilePhoneNumber" maxlength="10" title="" placeholder="Telephone Number (Mobile- 10 Digits)" class="w100p" />
    <input type="submit" name="" value="Check CCP" class="btn">
</form>

这是我的课:

@RequestMapping("/api/v1/checkPhoneNumber/{mobilePhoneNumber}")
@ResponseBody
public ResponseEntity<ReturnMessage> checkCCPHistoryCustomerPoint(@PathVariable("mobilePhoneNumber") String mobilePhoneNumber,
        @RequestParam Map<String, Object> params, ModelMap model) throws Exception {
            
                
        ReturnMessage message = new ReturnMessage();
        RestTemplate restTemplate = new RestTemplate();

        String url = "https://localhost:8080/VR2_REQUEST";

        String token = AppConstants.TOKEN;

        JSONObject jsonObject =  new JSONObject();
        JSONArray jsonArray =  new JSONArray();

        int recordSuccess = 0 , recordFail = 0;     
        
        try {
            String sessionKey = "2022111723";
            String fiCode = "B100000022";
            String code = "0011524";
            String appNumber = "APPL000000000000999";
            String customerNumber = "12345678";                 // "customerNumber": "12345678",
            // String mobilePhoneNumber = "0988567896";                 // "0988567896"     

            System.out.println("String URL: " + url);

            jsonObject.put("sessionKey", sessionKey);
            jsonObject.put("fiCode", fiCode);
            jsonObject.put("code", code);
            jsonObject.put("appNumber", appNumber);
            jsonObject.put("customerNumber", customerNumber);
            jsonObject.put("mobilePhoneNumber", mobilePhoneNumber);

            jsonArray.put(jsonObject);

            System.out.println("params -> {}" + jsonObject);    
        }
        catch(HttpClientErrorException exception) {
            // TODO Auto-generated catch block              
            essage.setMessage(e.toString());
            e.printStackTrace();
            return ResponseEntity.ok(message);
        }
                
   }

当我运行程序时,它似乎返回空值,并且出现以下异常:

2022-07-15 15:37:45,839  WARN [org.springframework.web.servlet.PageNotFound] No mapping found for HTTP request with URI [/api/v1/checkPhoneNumber/] in DispatcherServlet with name 'servlet'

那么如何将数据从 Form 中的输入 id 发送到 RequestMapping 和 PathVariable 呢?

我已经尝试了所有可能的方法来通过 PathVariable 获取表单内的输入值,但它似乎不起作用。

我假设您已经在下面知道了这一点。 如果您的要求是将号码输入控制器,您可以直接使用@ModelAttribute(mobilePhoneNumber) String mobilePhoneNumber ,而不是使用路径变量和字符串通过@PathVariable 获取号码。

在这种情况下

action="${pageContext.request.contextPath}/api/v1/checkPhoneNumber"

和控制器会像

public ResponseEntity<ReturnMessage> checkCCPHistoryCustomerPoint(@ModelAttribute("mobilePhoneNumber") String mobilePhoneNumber,
        @RequestParam Map<String, Object> params, ModelMap model) throws Exception

我假设你已经知道这一点。 谢谢

嗨,我尝试了不同的方法将数据从输入发送到 URL,但它不起作用然后我尝试使用 javascript,如果你没有使用 js 的限制,你可以这样做,但只有当你有一个数据要发送时它才会工作所以如果您使用建模工作将很快完成,或者您可以尝试这样。

<form id="insBasicForm" name="insBasicForm"  method="post">
<input type="text" id="mobilePhoneNumber" name="mobilePhoneNumber" maxlength="10" placeholder="Telephone Number (Mobile- 10 Digits)" class="w100p" />
<input type="button" name="" value="submit" class="btn" onclick="createUrl()">
<script type="text/javascript">
function createUrl(){
let mobilePhoneNumber = document.getElementById("mobilePhoneNumber").value;
window.location =  "/api/v1/checkPhoneNumber/"+mobilePhoneNumber;
}

您将需要 javaScript,因为 jps 将在处理后转换为 HTML,并且由于 HTML 是静态的,这意味着当表单加载时,它会使用固定的 URL 加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM