这是我在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);
这里我想在JSP页面中使用该值。
<td valign="top">
<s:textfield name="id" id="id" >
<s:property value="%{id}" />
</s:textfield>
</td>
在上面的代码中,我无法从bean设置该值。
答案 0 :(得分:2)
要在jsp中显示bean值,您需要在action类中创建bean实例。假设DemoAction
是calss,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"/>
答案 1 :(得分:0)
您不需要设置文本字段的值,因为该值是从您应为其提供操作bean的getter的name
属性填充的。要将值设置为除name
属性提供的文本字段以外的文本字段,您应使用value
属性。您也可以在标签正文中设置值,但不推荐使用它,因为它首先转换为字符串,然后用于将该字符串保留为文本字段的值。因此,最好为您提供name
属性和/或value
属性的getter。 Struts2实现了MVC2模式,您不必为您的操作编写控制器。相反,您可以将操作类作为控制器委托的数据模型bean提供。并且因为动作bean由框架放置在值堆栈之上,所以它的属性在JSP中按名称计算到相应的getter / setter而没有任何前缀。如果在操作bean中嵌套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
中创建一个配置来执行此操作。