Spring portlet:param未评估EL标记

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

试图为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="${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