Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将值从bean设置为JSP页面_Jsp_Struts2_Struts Tags - Fatal编程技术网

无法将值从bean设置为JSP页面

无法将值从bean设置为JSP页面,jsp,struts2,struts-tags,Jsp,Struts2,Struts Tags,下面是我在bean中设置值的代码 Infobean infobean = new Infobean(); Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); String query="SELECT ifnull(max(CONVERT(id, SIGNED)),0) as maxId FROM infotable"; List<?>

下面是我在bean中设置值的代码

Infobean infobean = new Infobean();
Session session =  HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();
String query="SELECT ifnull(max(CONVERT(id, SIGNED)),0) as maxId FROM infotable";
List<?> list = session.createSQLQuery(query).list();
int a = list.get(0).hashCode()+1;
String id = String.valueOf(a) ;
System.out.println(id);
infobean.setId(id);
Infobean Infobean=newinfobean();
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
String query=“从infotable中选择ifnull(max(CONVERT(id,SIGNED)),0)作为maxId”;
List List=session.createSQLQuery(query.List();
int a=list.get(0.hashCode()+1;
String id=String.valueOf(a);
系统输出打印项次(id);
setId(id);
这里我想在JSP页面中使用该值

<td valign="top">
    <s:textfield  name="id" id="id" >
        <s:property value="%{id}" />
    </s:textfield>
</td>


在上面的代码中,我无法从bean中设置该值

要在jsp中显示bean值,您需要在action类中创建bean实例。假设
DemoAction
是cals,而
Infobean
是具有
id
属性的bean类

 public class Infobean {
    private int id;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
 }
public class DemoAction {
    private Infobean info;
    public Infobean getInfo() {
        return info;
    }
    public void setInfo(Infobean info) {
        this.info = info;
    }
}
现在可以按如下所示显示属性值

<s:property value="info.id"/>

您不需要设置textfield的值,因为该值是从
name
属性填充的,您应该为该属性提供操作bean的getter。要将值设置为除
name
属性之外的文本字段,应使用
value
属性。您也可以在标记体中设置值,但不建议这样做,因为它首先转换为字符串,然后用于将该字符串保留为textfield的值。因此,更好的方法是为
name
属性和/或
value
属性提供getter。Struts2已经实现了MVC2模式,您不必为自己的操作编写控制器。相反,您可以将action类作为控制器委托的数据模型bean提供。由于框架将ActionBean放在值堆栈的顶部,因此在JSP中,它的属性将按名称计算到相应的getter/setter,而不带任何前缀。如果您在Actionbean中有嵌套bean,并且没有实现模型驱动的接口,那么您也应该为这些bean提供getter/setter,并使用其名称为bean的属性添加点前缀

public Infobean extends ActionSupport {

  private Integer id;

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  @Override
  public String execute() throws Exception {    
    Session session =  HibernateUtil.getSessionFactory().getCurrentSession();        
    session.beginTransaction();
    String query="SELECT ifnull(max(id),0) as maxId FROM infotable";
    List list = session.createSQLQuery(query).list();
    Object a = list.get(0);
    int id = Integer.parseInt(a.toString())+1;
    System.out.println(id);
    setId(id);

    return SUCCESS;
  }
}
在JSP中:

<s:textfield name="id" value="%{id}"/>


当然,您应该在
struts.xml
中创建一个配置来执行此操作。

您确定该值已打印到控制台吗?