Spring portlet:param未评估EL标记
试图为SpringMVCPortlet:ActionUrlPortlet:param设置值,但由于某些原因EL没有解析JSTL。有关Message.java和MessageForm.java以及Message.java的详细信息,请参见下文。java实现了equals()和hascode(),在WebSphere Portal Server v8.0和JDK 1.6中作为Spring MVC Portlet运行 这是我的JSP:Spring portlet:param未评估EL标记,spring,jsp,el,portlet,spring-portlet-mvc,Spring,Jsp,El,Portlet,Spring Portlet Mvc,试图为SpringMVCPortlet:ActionUrlPortlet:param设置值,但由于某些原因EL没有解析JSTL。有关Message.java和MessageForm.java以及Message.java的详细信息,请参见下文。java实现了equals()和hascode(),在WebSphere Portal Server v8.0和JDK 1.6中作为Spring MVC Portlet运行 这是我的JSP: <c:forEach items="${messageFor
<c:forEach items="${messageForm.messageList}" var="message" varStatus="status">
<HTMLWRAPPER name="Message_Repeat">
<tr sequence_class="tableRowPrimary,tableRowAlternate">
<td class="descriptionCell" width="150" align="Center"><form:hidden path="messageList[${status.index}].subject"/>
<a href='
<portlet:actionURL>
<portlet:param name="action" value="detail"/>
<portlet:param name="id" value="${message.id}"/>
</portlet:actionURL>'><c:out value="${message.subject}"/></a>
</td>
</tr>
</HTMLWRAPPER>
</c:forEach>
使用Spring MVC portlet v3.2.8及以下是标记库:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
Message.java
public class Message implements Serializable {
private static final long serialVersionUID = 1L;
Integer id;
String type;
String subject;
String receiveDate;
String expireDate;
boolean readFlag;
boolean deleteFlag;
String body;
ArrayList<Attachment> attachmentList;
Integer attachmentCount;
String toAddress;
String fromAddress = "From Online";
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public ArrayList<Attachment> getAttachmentList() {
return attachmentList;
}
public void setAttachmentList(ArrayList<Attachment> attachmentList) {
this.attachmentList = attachmentList;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public Integer getAttachmentCount() {
return attachmentCount;
}
public void setAttachmentCount(Integer attachmentCount) {
this.attachmentCount = attachmentCount;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getReceiveDate() {
return receiveDate;
}
public void setReceiveDate(String receiveDate) {
this.receiveDate = receiveDate;
}
public String getExpireDate() {
return expireDate;
}
public void setExpireDate(String expireDate) {
this.expireDate = expireDate;
}
public boolean isDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(boolean deleteFlag) {
this.deleteFlag = deleteFlag;
}
public boolean isReadFlag() {
return readFlag;
}
public void setReadFlag(boolean readFlag) {
this.readFlag = readFlag;
}
@Override
public boolean equals(Object object) {
boolean result = false;
if (object == null || object.getClass() != getClass()) {
result = false;
} else {
Message message = (Message) object;
if (this.getType() == message.getType()
&& this.getId() == message.getId()) {
result = true;
}
}
return result;
}
@Override
public int hashCode() {
int hash = 3;
hash = 7 * hash + this.id.hashCode();
hash = 7 * hash + this.subject.hashCode();
return hash;
}
}
public class MessageForm implements Serializable {
private static final long serialVersionUID = 1L;
public ArrayList<Message> messageList = new ArrayList<Message>();
public String delMsgConf;
public String getDelMsgConf() {
return delMsgConf;
}
public void setDelMsgConf(String delMsgConf) {
this.delMsgConf = delMsgConf;
}
public ArrayList<Message> getMessageList() {
return messageList;
}
public void setMessageList(ArrayList<Message> messageList) {
this.messageList = messageList;
}
}
公共类消息实现可序列化{
私有静态最终长serialVersionUID=1L;
整数id;
字符串类型;
字符串主题;
字符串receiveDate;
字符串过期;
布尔读取标志;
布尔删除标志;
弦体;
ArrayList附件列表;
整数attachmentCount;
字符串地址;
字符串fromAddress=“From Online”;
公共字符串getToAddress(){
返回地址;
}
public void setToAddress(字符串toAddress){
this.toAddress=toAddress;
}
公共字符串getFromAddress(){
从地址返回;
}
公共void setFromAddress(字符串fromAddress){
this.fromAddress=fromAddress;
}
公共阵列列表getAttachmentList(){
返回附件列表;
}
public void setAttachmentList(ArrayList attachmentList){
this.attachmentList=attachmentList;
}
公共字符串getBody(){
返回体;
}
公共体(字符串体){
这个身体=身体;
}
公共整数getAttachmentCount(){
返回attachmentCount;
}
public void setAttachmentCount(整数attachmentCount){
this.attachmentCount=attachmentCount;
}
公共整数getId(){
返回id;
}
公共无效集合id(整数id){
this.id=id;
}
公共字符串getType(){
返回类型;
}
公共void集合类型(字符串类型){
this.type=type;
}
公共字符串getSubject(){
返回主题;
}
public void setSubject(字符串主题){
this.subject=主语;
}
公共字符串getReceiveDate(){
返回接收日期;
}
public void setReceiveDate(字符串receiveDate){
this.receiveDate=receiveDate;
}
公共字符串getExpireDate(){
返回到期日期;
}
公共void setExpireDate(字符串expireDate){
this.expireDate=过期日期;
}
公共布尔值isDeleteFlag(){
返回删除标志;
}
公共void setDeleteFlag(布尔deleteFlag){
this.deleteFlag=deleteFlag;
}
公共布尔值isReadFlag(){
返回readFlag;
}
公共无效setReadFlag(布尔readFlag){
this.readFlag=readFlag;
}
@凌驾
公共布尔等于(对象){
布尔结果=假;
if(object==null | | object.getClass()!=getClass()){
结果=假;
}否则{
Message=(Message)对象;
if(this.getType()==message.getType())
&&this.getId()==message.getId()){
结果=真;
}
}
返回结果;
}
@凌驾
公共int hashCode(){
int hash=3;
hash=7*hash+this.id.hashCode();
hash=7*hash+this.subject.hashCode();
返回散列;
}
}
MessageForm.java
public class Message implements Serializable {
private static final long serialVersionUID = 1L;
Integer id;
String type;
String subject;
String receiveDate;
String expireDate;
boolean readFlag;
boolean deleteFlag;
String body;
ArrayList<Attachment> attachmentList;
Integer attachmentCount;
String toAddress;
String fromAddress = "From Online";
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public ArrayList<Attachment> getAttachmentList() {
return attachmentList;
}
public void setAttachmentList(ArrayList<Attachment> attachmentList) {
this.attachmentList = attachmentList;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public Integer getAttachmentCount() {
return attachmentCount;
}
public void setAttachmentCount(Integer attachmentCount) {
this.attachmentCount = attachmentCount;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getReceiveDate() {
return receiveDate;
}
public void setReceiveDate(String receiveDate) {
this.receiveDate = receiveDate;
}
public String getExpireDate() {
return expireDate;
}
public void setExpireDate(String expireDate) {
this.expireDate = expireDate;
}
public boolean isDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(boolean deleteFlag) {
this.deleteFlag = deleteFlag;
}
public boolean isReadFlag() {
return readFlag;
}
public void setReadFlag(boolean readFlag) {
this.readFlag = readFlag;
}
@Override
public boolean equals(Object object) {
boolean result = false;
if (object == null || object.getClass() != getClass()) {
result = false;
} else {
Message message = (Message) object;
if (this.getType() == message.getType()
&& this.getId() == message.getId()) {
result = true;
}
}
return result;
}
@Override
public int hashCode() {
int hash = 3;
hash = 7 * hash + this.id.hashCode();
hash = 7 * hash + this.subject.hashCode();
return hash;
}
}
public class MessageForm implements Serializable {
private static final long serialVersionUID = 1L;
public ArrayList<Message> messageList = new ArrayList<Message>();
public String delMsgConf;
public String getDelMsgConf() {
return delMsgConf;
}
public void setDelMsgConf(String delMsgConf) {
this.delMsgConf = delMsgConf;
}
public ArrayList<Message> getMessageList() {
return messageList;
}
public void setMessageList(ArrayList<Message> messageList) {
this.messageList = messageList;
}
}
public类MessageForm实现可序列化{
私有静态最终长serialVersionUID=1L;
public ArrayList messageList=new ArrayList();
公共字符串delMsgConf;
公共字符串getDelMsgConf(){
返回delMsgConf;
}
公共void setDelMsgConf(字符串delMsgConf){
this.delMsgConf=delMsgConf;
}
公共阵列列表getMessageList(){
返回消息列表;
}
public void setMessageList(ArrayList messageList){
this.messageList=messageList;
}
}
这是控制器:
@ActionMapping(params = "action=detail")
public void detailMessage(@ModelAttribute("messageForm") MessageForm messageForm, BindingResult result, Model model,@RequestParam(required=false, value="id") String id, ActionRequest actionRequest,ActionResponse actionResponse) throws Exception {
ArrayList<Message> messages = messageForm.getMessageList();
HttpServletRequest servletRequest = PortletUtils.getHttpServletRequest(actionRequest);
String sessionId = servletRequest.getSession().getId();
String messageId = actionRequest.getParameter("id");
@ActionMapping(params=“action=detail”)
public void detailMessage(@modeldattribute(“messageForm”)messageForm messageForm,BindingResult,Model Model,@RequestParam(required=false,value=“id”)字符串id,ActionRequest ActionRequest,ActionResponse ActionResponse)引发异常{
ArrayList messages=messageForm.getMessageList();
HttpServletRequest-servletRequest=PortletUtils.getHttpServletRequest(actionRequest);
字符串sessionId=servletRequest.getSession().getId();
字符串messageId=actionRequest.getParameter(“id”);
当打印出
messageId
时,它只显示${message.id}
作为值-知道我做错了什么吗?你能粘贴MessageForm
和Message
java类代码吗,我认为messageList
类包含Message
对象的列表。在Message
类中是否有类似getId
的方法?。Thanks@grek,那${message.subject}
它会计算吗?@PrakashK-是的,ArrayList messageList是MessageForm。message.java中有一个方法getId(){return id;}@Arvind谢谢您的输入。它也不会计算…只需打印${message.subject}@grek,我想EL在jsp中被忽略了,无论是在jsp还是在web.xml,请检查jsp属性,isaligned