【问题标题】:Bind form values in session bean在会话 bean 中绑定表单值
【发布时间】:2014-10-19 19:22:01
【问题描述】:

我有一个存储在会话中的 Bean,以及三个表单。我需要将提交的值保存到 bean,这是顺序: Form1.jsp -> Form2.jsp -> Form3.jsp - > ViewValues.jsp.

这是我的豆子:

package bean;

public class Cotizacion implements java.io.Serializable {

    private static final long serialVersionUID = 1L;
    // Some properties ...

    public Cotizacion(){
        // Nothing ...
    }
    // Accessors & toString ...
}

第一个JSP有这个动作:

<jsp:useBean id="cotizacion" class="bean.Cotizacion" scope="session" />

第二个和第三个JSP都有这个动作:

<jsp:useBean id="cotizacion" class="bean.Cotizacion" scope="session">
    <jsp:setProperty name="cotizacion" property="*" />
</jsp:useBean>

当我以第三种形式尝试&lt;% System.out.print("Cobertura.jsp: " + cotizacion); %&gt;时,控制台输出为:

Cobertura.jsp: 福特;T;1990;5000;null;null;null;null;null;null

bean 仅在第一次提交后填充。 bean 属性与请求参数相同。

有什么想法吗?

【问题讨论】:

    标签: java jsp session javabeans


    【解决方案1】:

    &lt;jsp:setProperty name="cotizacion" property="*" /&gt;从请求参数中重新初始化了属性,但是你没有使用参数或者参数为空。确保 bean 具有 getter 和 setter。如果您删除此标记,则 bean 应保留会话值。如果要使用请求中的参数填充 bean,请使用

    <jsp:useBean id="cotizacion" class="bean.Cotizacion" scope="session"></jsp:useBean>
    <jsp:setProperty name="cotizacion" property="*" />
    

    上面的例子导致对 HTTP 请求参数的迭代,将 bean 属性名称与请求参数名称匹配,并根据相应的请求参数值设置 bean 属性值。如果您使用 POST 方法提交表单,则请求中缺少参数。

    【讨论】:

    • 罗马,参数存在于POST请求中。设置器在 bean 中定义。如果我删除&lt;jsp:setProperty name="cotizacion" property="*" /&gt;,则每次提交后都不会填充 bean。
    • 如果您想使用请求中的参数填充 bean,请参见上面的代码。
    • 很高兴为您工作,具有此参数和属性含义。
    猜你喜欢
    • 2011-01-02
    • 2011-02-03
    • 2015-07-23
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多