2014-03-29 52 views
-1

這裏是我在bean中設置值的代碼。無法將bean的值設置爲JSP頁面

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值,您需要在操作類中創建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"/> 
0

你並不需要設置文本字段的值,因爲該值從name屬性爲您應該提供行動豆的吸氣劑填充。要將該值設置爲除name屬性提供的文本字段外,應使用value屬性。您也可以在標籤主體中設置值,但不建議這樣做,因爲它首先轉換爲字符串,然後用於將該字符串保留爲文本字段的值。因此,最好爲您提供name屬性和/或value屬性的吸氣劑。 Struts2已經實現了MVC2模式,您不必爲自己的行爲編寫控制器。相反,您可以將操作類作爲控制器委託的數據模型bean提供。由於動作bean由框架放置在值棧的頂部,因此它的屬性在JSP中按名稱評估爲相應的getter/setter,不帶任何前綴。如果你在動作bean中嵌套了bean,並且你沒有實現一個模型驅動的接口,那麼你應該爲這些bean提供getters/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配置以執行此操作。