2015-05-13 150 views
0

此代码在Liferay 6.1平台上运行。我无法将JSP页面的值页面提交给控制器类提交

描述:我有一个名称为“Store Name”的下拉菜单。我将从下拉列表中选择任意一个值并将该值传递给JavaScript函数“getStoreDetails”onchange。这个函数发送的值将在javascript数组“lNames”中检查,如果该数组中存在值,则将获得索引,并使用索引从“fNames”数组中获取值并添加到span类“FirstName”。我能够做到这一点,代码工作正常。

问题:我无法从jsp文件获取FirstName值给Controller类的submitIssue方法。

这是我的控制器类

public class IssueController{ 

public String handleRenderRequest(RenderRequest request, RenderResponse response, Model model) throws Exception { 
HttpServletRequest httpRequest = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(request)); 

User user = PortalUtil.getUser(httpRequest); 

model.addAttribute("my_user", user); 

/*Some code goes here to set user attributes like department and organization using model object */ 

return "issue"; /*This is my jsp file mentioned below*/ 

} 

@ActionMapping 
public void submitIssue(@ModelAttribute IssueForm submitIssueForm, ActionRequest request, ActionResponse response) throws PortalException, SystemException, IOException, PortletException { 

     String First_Name=request.getParameter("FirstName"); 
     System.out.println("First Name while submitting is :\t"+First_Name); 

     /* here i am not able to obtain value of First_Name */ 
    } 

} 

下面的代码是我issue.jsp文件

<div class="large-4 medium-8 small-12 columns"> 
       Store Name <select 
        class="no-highlight" id="StoreName_dropdown" 
        name="storeName" 
        onchange="getStoreDetails(this.value);" 

        <% 

        String stores[] = new String[] {"1021","1022","1023","1024","1025","1026","1027","1028","1029","1030"}; 

        for(int i=0;i<stores.length;i++){%> 

        <option value="<%=stores[i]%>"><%=stores[i]%></option> 

        <%}%> 

       </select> 
    </div> 
    <% 
    String fNames[] = new String[] {"John1021","wilson1022","test1023","test1024","test1025","test1026","test1027","test1028","test1029","test1030"}; 
     StringBuffer bufferfNames = new StringBuffer(); 
     bufferfNames.append("["); 
     for(int i=0; i<fNames.length; i++){ 

      bufferfNames.append("\"").append(fNames[i]).append("\""); 
       if(i+1 < fNames.length){ 
        bufferfNames.append(","); 
       } 
     } 
     bufferfNames.append("]"); 
     String First_Name=bufferfNames.toString(); 

     String lNames[] = new String[] {"1021","1022","1023","1024","1025","1026","1027","1028","1029","1030"}; 

     StringBuffer bufferlNames = new StringBuffer(); 
     bufferlNames.append("["); 
     for(int i=0; i<lNames.length; i++){ 

      bufferlNames.append("\"").append(lNames[i]).append("\""); 
       if(i+1 < lNames.length){ 
        bufferlNames.append(","); 
       } 
     } 
     bufferlNames.append("]"); 
     String Last_Name=bufferlNames.toString(); 
    %> 
    <div class="row "> 
      <div class="large-3 medium-4 columns"> 
       <span class="firstName">First Name : &nbsp;&nbsp; <span 
        class="hide-for-medium-up"><b>"dynamically name added"</b></span></span> 
       <div class="hide-for-small" id="FirstName" > 
        <b>"dynamically name added"</b> 
       </div> 
</div> 
</div> 

<div class="row "> 
     <div class="large-2 medium-3 columns"> 
       <button class="submitIssue submit_button" 
        id="submitIssue" tabIndex=9> 
        Submit 
       </button> 
     </div> 
</div> 

<script> 
function getStoreDetails(store) { 

    var fNames=<%=First_Name%>; 
    var lNames=<%=Last_Name%>; 
    var index; 

    index=lNames.indexOf(store); 

    if (index > -1) { 
     document.getElementById("FirstName").innerHTML = fNames[index]; 
    } 
    else{ 
     alert("Store is not present in lNames !!"); 
    } 
} 
</script> 

我在单独的文件submitIssue.js JavaScript程序

$(document).ready(function() { 
     $('button.submitIssue').click(function(){ 
     $('#submitIssueForm').submit(); 
    }); 
}); 

任何人都可以建议我获得这个价值。如果您还没有理解我的问题陈述,请注意事项。提前致谢。

+0

我无法找到你把名字作为请求参数的位置既没有提交代码(或按钮) – jMounir

回答

0

你能看到“FirstName”打印在你的jsp中吗?如果是的话,你需要在输入标签中传递这个值,以便你可以期待这个值进入你的控制器。希望这可以帮助!!

+0

每次我在下拉菜单中更改选项时,名字值都会改变。所以当我尝试打印它时,它会在您的javascript变量上使用toString方法打印“null” – user3534759

+0

。对于ex - lNames.toString()。indexOf(store.toString) – Ravi

+0

是的,我能够看到我的JSP中的值。如果我按照你所说的那样做,它将从具有多个名称的数组lname中形成字符串。像String lNames [] = {“Name1”,“Name2”,“Name3”,“Name4”,“Name5”........“NameN”};我将在JSP中使用“index”显示一个名称,因此无论它打印什么,我都必须将其读取到Controller类。 – user3534759