簡體   English   中英

通過URL將值從Spring MVC中的JSP傳遞給控制器

[英]Passing value via URL to controller from JSP in Spring MVC

創建一個應用程序。 頁面A顯示包含值列表的下拉列表。 如果用戶單擊特定帳戶,將顯示一個圖表。 帳戶下拉列表的右側有類似的按鈕。 這些是單獨的JSP。 如果用戶單擊頁面A,則所選帳戶名應移至這4個jsp頁面。 我已經嘗試通過URL。 但沒有得到。 請幫忙。

JSP 1

<a id="priorityCallAnalysis" class="item"> <button type ="button" onclick="getPriorityCall()">Priority </button> </a>
<form:form action="somepage" method="post" commandName="somedata"
                id="taskDetails" enctype="multipart/form-data">
                <div class="row">
                    <div class="col-md-4">
                        <div class="form-group">
                            <label>Choose Account*</label>
                            <form:select path="accountName" class="form-control"
                                id="accountName" onchange="getDashboard()">

                                <form:option value="" label="--select--"></form:option>
                                <c:forEach items="${accountList}" var="accountName">
                                    <form:option value="${accountName}" label="${accountName}"></form:option>
                                </c:forEach>


                            </form:select>
                        </div>
                    </div>
                </div>
                </form:form>

function getPriorityCall()
{
    var accountName = $("#accountName").val();
    alert(accountName);
    window.location="priorityCall.html?accountName="+accountName+"";
} 

控制者

@RequestMapping(value="/priorityCall")
    public ModelAndView priorityCall(Map<String, Object> model,@RequestParam ("accountName") String accName)
    {
        System.out.println("entry");
        SampleBean template = new SampleBean ();
        model.put("template ", template );
        List<String> accountList = Service.getAccountList();
        model.put("accountList", accountList);
        model.put("accName", accName);

        return new ModelAndView("analByPrior","","");
    }

JSP:analByPrior

<form:form action="#" method="post" commandName="somedata"
                id="taskDetails" enctype="multipart/form-data">
                <div class="row">
                    <div class="col-md-4">
                        <div class="form-group">
                            <label>Choose Account*</label>
                            <form:select path="accountName" class="form-control"
                            id="accountName" onchange="getAssignmentGroups()">
                            <form:option value="" label="--select--"></form:option>
                            <c:forEach items="${accountList}" var="accName">
                        <form:option value="${accName}" selected="true"> ${accName}</form:option>
                            </c:forEach>

                        </form:select>
                        </div>
                    </div>
                </div>
            </form:form>

更新在單擊“優先級按鈕”時,正在調用此控制器,而不是PriorityCall。。我不知道。

@RequestMapping("/priorityCallAnalysis")
    public String someAction(@ModelAttribute("accountName") TicketInfo data, Map<String, Object> map,
                                    HttpServletRequest request) {

        TicketInfo somedata = new TicketInfo();
            map.put("somedata",somedata);
            System.out.println(somedata);
           System.out.println("acc=" + request.getParameter("accountName"));

           /* do some process and send back the data */
            map.put("somedata", data);
            map.put("accountName", request.getParameter("accountName"));

            return "analysisByPriority";
       }

首先,在.jsp文件中,您可以使用全局變量來存儲上下文路徑,並將此變量用作所有相對路徑中的前綴。

<script>var context = "${pageContext.request.contextPath}"</script>

現在,在您的js函數中,使用上下文路徑並調用控制器。

function getPriorityCall(){
  var accountName = $("#accountName").val();
  alert("contextPath: "+context); // will print your {appName}
  window.location=context+"/priorityCall?accountName="+accountName;
}

因此,您的URI如下所示在您的請求調用中。

http://localhost:8080/{appName}/priorityCall?accountName={acountName}

PS:

  • 使用此${pageContext.request.contextPath}好處是,如果以后更改appName,則無需在視圖中進行更改。 它將自動獲取最新的contextPath。
  • 如果您使用的是Firefow瀏覽器,請安裝firebug附加組件,然后將其用於驗證您的請求。 因此,您可以使用params驗證URI。(如果其鑲邊使用Inspect Element來驗證URI)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM