我用struts在Action中处理过后得到一个实体对象,并存在request中名字为“onedept"
在struts中对应的物理视图是showuserinfo.jsp在showuserinfo.jsp中我写下如下代码
<%@ page language="java" import="java.util.*,com.accp.po.*" pageEncoding="GBK"%>
<jsp:useBean id="jstldept" class="com.accp.po.Dept" scope="request" /><jsp:setProperty property="*" name="jstldept" value="${requestScope.onedept}"  /><html>
<head>
</head> <body>
<form action="dept.do?method=updept" method="post" >
  <input type="hidden" name="deptno" value="${jstldept.deptno}" />
  <input type="text" name="dname" value="${jstldept.dname}" />
  <input type="text" name="loc" value="${jstldept.loc}" />
<input type="submit" value="提交" />
</form>
</body>
</html>
但是一直报错(在这个jsp页面中做过测试,onedept中是有值的)但是这样写就是报错,我改成如下写法就对了,能告诉我第一种写法为什么不能正常运行赋值吗?<%@ page language="java" import="java.util.*,com.accp.po.*" pageEncoding="GBK"%>
<jsp:useBean id="jstldept" class="com.accp.po.Dept" scope="request" /><jsp:setProperty property="deptno" name="jstldept" value="${requestScope.onedept.deptno}"  />
<jsp:setProperty property="dname" name="jstldept" value="${requestScope.onedept.dname}"  />
<jsp:setProperty property="loc" name="jstldept" value="${requestScope.onedept.loc}"  />
<html>
<head>
</head> <body>
<form action="dept.do?method=updept" method="post" >
  <input type="hidden" name="deptno" value="${jstldept.deptno}" />
  <input type="text" name="dname" value="${jstldept.dname}" />
  <input type="text" name="loc" value="${jstldept.loc}" />
<input type="submit" value="提交" />
</form>
</body>
</html>

解决方案 »

  1.   

    对于JSP页面中的setProperty和getProperty标签而言,它们都要求根据属性名来操作JavaBean的属性。实际上setProperty和getProperty要求的属性名,与Java类中定义的属性有一定的差别,例如setProperty和getProperty需要使用name属性,但JavaBean中是否真正定义了name属性并不重要,主要是在JavaBean中提供了setName()和getName()方法即可。事实上,当页面使用setProperty和getProperty标签时,系统底层就是调用setName()和getName()方法来操作POJO实例的属性。
      

  2.   

    如果在一个表单页面中需要输入信息,而其标签的name 正好是对象的属性,
    所以提交到另一个页面来封装对象的信息,代码:
    <jsp:useBean id="jstldept" class="com.accp.po.Dept" scope="request" />
    <jsp:setProperty property="*" name="jstldept" value="${requestScope.onedept}"  />是可以的User:
    public class User
    {
       private string tel;
       private string add;
       
       //geter() get方法  
       //seter() set方法}
    定义一个页面1.jsp,内容如下:<form action="2.jsp">
      用户名:<input type="text" name="tel"/>
      地址:<input type="text" name="add"/>
    </form>提交的2.jsp,内容如下:<jsp:useBean id="user" class="User" />
    <jsp:setProperty property="*" name="user"  />