在Struts2上显示属性时出现问题

时间:2011-03-09 22:44:53

标签: java hibernate jsp struts2 properties

我有以下动作类:

package com.pendulum.web;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.pendulum.dao.DocumentoDAO;
import com.pendulum.domain.Documento;
import com.pendulum.domain.DocumentoPK;

public class DocumentoAction extends ActionSupport implements ModelDriven<Documento>{

    private static final long serialVersionUID = 8757127171831894323L;
    private Documento documento = new Documento();
    private List<Documento> documentList = new ArrayList<Documento>();
    private DocumentoDAO documentoDAO = new DocumentoDAO();
    private Documento currDocument = new Documento(); 
    private DocumentoPK documentoPK = new DocumentoPK();

    @Override
    public Documento getModel() {
        return documento;
    }

    public Documento getDocumento() {
        return documento;
    }

    public void setDocumento(Documento documento) {
        this.documento = documento;
    }

    public List<Documento> getDocumentList() {
        return documentList;
    }

    public void setDocumentList(List<Documento> documentList) {
        this.documentList = documentList;
    }

    public String listDocument()
    {
        HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
        documentList = documentoDAO.listDocumentsByCreditId(request.getParameter("creditId"));
        if (documentList.size()>0) {
            currDocument = documentList.get(0);
            documentoPK = currDocument.getDocumentoPK();
        }

        System.err.println(documentList.size());
        System.err.println(currDocument.getDocumentoPK().getCreditoId());
        System.err.println(currDocument.getOrigenId());
        return SUCCESS;
    }

    public DocumentoDAO getDocumentoDAO() {
        return documentoDAO;
    }

    public void setDocumentoDAO(DocumentoDAO documentoDAO) {
        this.documentoDAO = documentoDAO;
    }

    public Documento getCurrDocument() {
        return currDocument;
    }

    public void setCurrDocument(Documento currDocument) {
        this.currDocument = currDocument;
    }

    public DocumentoPK getDocumentoPK() {
        return documentoPK;
    }

    public void setDocumentoPK(DocumentoPK documentoPK) {
        this.documentoPK = documentoPK;
    }


}

我的问题是在我的视图(.jsp)中我可以从currDocument获取属性,但我无法获取DocumentoPK中的属性。

DocumentoPK是一个在自己的类上声明的hibernate复合键,并在每个Documento bean上实例化,但是...在我的jsp中我有:

<table class="userTable" cellpadding="5px">
        <tr class="even">
            <td><s:property value="currDocument.origenId"/></td>
            <td><s:property value="documentoPK.creditId"/></td>
            <td><s:property value="currDocument.documentoPK.creditId"/></td>
            <td><s:property value="creditId"/></td>
        </tr>
</table>

但只有第一个的值被渲染...并且不知道我是否遗漏了明显的东西。 任何帮助非常感谢! Jhurtado

1 个答案:

答案 0 :(得分:2)

由于DocumentoPK上的getter为getCreditoId(),因此不应将OGNL属性命名为creditoId

<td><s:property value="documentoPK.creditId"/></td>
<td><s:property value="currDocument.documentoPK.creditId"/></td>