2017-08-08 111 views
0

這是spring mvc portlet的一部分,我們試圖從控制器的視圖圖層中檢索模型屬性,但它顯示爲空。 我們嘗試使用modelAttribute以及commandName與bean名稱和表單輸入字段以及與bean屬性相對應的路徑名稱。無法從spring中查看模型屬性mvc portlet

查看JSP

<form:form id="empForm" modelAttribute="empBean" action="${createEmpURL}" method="POST" class="form-horizontal"> 

<form:hidden path="empId"></form:hidden> 
<div class="control-group"> 
    <label class="control-label" for="empName">Employee Name</label> 
    <div class="controls"> 
     <form:input type="text" id="empName" path="empName"/> 
    </div> 
</div> 
<div class="control-group"> 
    <label class="control-label" for="grade">Grade</label> 
    <div class="controls"> 
     <form:input type="text" id="grade" path="grade"/> 
    </div> 
</div> 
<div class="control-group"> 
    <div class="controls"> 
      <input id="validateNewEmployeeButton" class="btn btn-primary" type="submit" value="Create"/> 

    </div> 
</div> 

Controller類

@ActionMapping 
    public void createEmp(@ModelAttribute("empBean") Employee emp, BindingResult bindingResult,ActionRequest req,ActionResponse res) 
{ 
    System.out.println("------------->"+emp); 

} 

乙EAN類

public class Employee implements Comparable<Employee>,Serializable { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
private long empId; 
private String empName; 
private String grade; 

public long getEmpId() { 
    return empId; 
} 

public Employee() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

public void setEmpId(long empId) { 
    this.empId = empId; 
} 

public String getEmpName() { 
    return empName; 
} 

public void setEmpName(String empName) { 
    this.empName = empName; 
} 

public String getGrade() { 
    return grade; 
} 

public void setGrade(String grade) { 
    this.grade = grade; 
} 


@Override 
    public int compareTo(Employee o) { 

     return (int) (this.getEmpId() - o.getEmpId()); 

    } 
} 

Update 

使用這個網址行動網址:<portlet:actionURL var="createEmpURL" escapeXml="false"> </portlet:actionURL>

上,這可能是缺少可能將是有益的任何線索,請爲需要的任何進一步的細節發表評論。

+0

你得到任何錯誤?什麼是你映射的網址? –

+0

@shantaram_t每sese沒有錯誤。我將表單映射到一個動作URL.Will更新問題 –

回答

1

嘗試修改您的控制器方法

  1. 添加網址@ActionMapping(value="/someUrl")
  2. 嘗試使用BindingResult

    @ActionMapping(value="/someUrl") 
    public void createEmp(@ModelAttribute("empBean") Employee emp, BindingResult bindingResult,ActionRequest req,ActionResponse res) 
    { 
        for(FieldError fieldError : bindingResult.getFieldErrors()) 
         System.out.println(fieldError.getField() +" : "+fieldError.getDefaultMessage()); 
        System.out.println("------------->"+emp); 
    } 
    

更新打印綁定錯誤: - 嘗試創建網址爲

<portlet:actionURL var="createEmpURL" name="createEmp" escapeXml="false"> 
</portlet:actionURL> 

更新2從這個鏈接https://web.liferay.com/community/forums/-/message_boards/message/32472440#_19_message_32690931


我用下面的標記中的Liferay-portlet.xml文件的成功合作..

<requires-namespaced-parameters>false</requires-namespaced-parameters> 

liferay-portlet.xml如下

<portlet> 
    <portlet-name>welcome</portlet-name> 
    <requires-namespaced-parameters>false</requires-namespaced-parameters> 
</portlet> 

希望這有助於...

+0

我曾嘗試bindingResult.getFieldErrors()但它是空的 –

+0

什麼是動作url? –

+0

已更新問題 –