2

以前はスクリプトレットを使用していましたが、現在は mvc に切り替えています。JSP ページで値を取得できず、エラーが発生します。

javax.el.PropertyNotFoundException: Property 'tname' not found on type java.lang.String

ビーンのコード:

public class regForm extends org.apache.struts.validator.ValidatorForm implements Iprafunctions {

    private String tname = null;
    private String tfee = null;

    public String getTfee() {
        return tfee;
    }

    public void setTfee(String tfee) {
        this.tfee = tfee;
    }

    public String getTname() {
        return tname;
    }

    public void setTname(String tname) {
        this.tname = tname;
    }
    public regForm() {
        super();
    }
}

アクションコントローラー:

public ActionForward mvc(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    regForm reg = (regForm) form;
    String sql = "Select tname,tfee from addtest order by tname";
    ResultSet rs = SQLC.getData(sql, null);
    Collection myBeans = new ArrayList();
    while (rs.next()) {
        String testname = rs.getString("tname");
        String testfee = rs.getString("tfee");
        reg.setTname(testname);
        reg.setTfee(testfee);
        myBeans.add(reg.getTname());
        myBeans.add(reg.getTfee());
    }
    request.setAttribute("myBeans", myBeans);
    return mapping.findForward(SUCCESS);
}

JSP ページでのアクセス

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table>
    <tr><td>Name</td><td>Fee</td></tr>
    <c:forEach var="reg" items="${myBeans}">
        <tr>
            <td><c:out value="${reg.tname}"></c:out></td>
            <td><c:out value="${reg.tfee}"></c:out></td>
        </tr>
    </c:forEach>
</table>
4

2 に答える 2

5

実際にあなたはあなたに文字列を追加していてCollection、あなたは呼び出そうとしています

getTName()${reg.tname}

Bean全体をコレクションに追加するか、JSTLを単に置き換えます${reg}

于 2012-06-01T18:16:14.290 に答える
1

名前と料金を配列リストに直接追加していると思いますが、regFormオブジェクト全体を配列リストに追加する必要があります。

以下のコードの代わりに

myBeans.add(reg.getTname());
myBeans.add(reg.getTfee());

あなたは好きにする必要があります

myBeans.add(reg);

さらに、フォームから取得したものと同じオブジェクトを使用しないでください。新しいオブジェクトを作成して arraylist に追加し、ジェネリックを使用してみてください。

編集:

while (rs.next()) {
        String testname = rs.getString("tname");
        String testfee = rs.getString("tfee");
        regForm beanObject = new regForm();
        beanObject.setTname(testname);
        beanObject.setTfee(testfee);
        myBeans.add(beanObject);
    }
于 2012-06-01T18:18:51.903 に答える