在会话bean中绑定表单值

时间:2014-10-19 19:22:01

标签: java jsp session javabeans

我有一个存储在会话中的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>

当我在第三种形式中尝试<% System.out.print("Cobertura.jsp: " + cotizacion); %>时,控制台输出为:

  

Cobertura.jsp:Ford; T; 1990; 5000; null; null; null; null; null; null

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

<jsp:setProperty name="cotizacion" property="*" />来自请求参数的重新初始化属性,但您没有使用参数或参数为空。确保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方法提交表单,则缺少请求中的参数。