2017-08-08 113 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

已更新问题 –