struts2 通過form表單方式或者js的方式提交請求,封裝boolean值的問題
在jsp上的代碼
<form name="searchform" action="">
<input id="searchInfo.isHighSearch" name="searchInfo.isHighSearch" value="true"
type="hidden" />
然後通過struts2把參數封裝在vo bean中,bean的類名是SearchInfo.java
該類中有個屬性
private boolean isHighSearch;
用myeclipse 6.0自動產生的set/get方法是
對應的set/get方法是
public boolean isHighSearch() {
return isHighSearch;
}
public void setHighSearch(boolean isHighSearch) {
this.isHighSearch = isHighSearch;
}
然後在action中
SearchInfoBean searchInfoBean = new SearchInfoBean();
System.out.println(searchInfoBean.isHighSearch());
列印出來的值總是false,和表單的值不一致
後來才發現myelipse自動產生的get方法,boolean類型的,自動在屬性名稱加上首碼"is",
上面的例子是isHighSearch,
解決的辦法是把屬性名稱字改為highSearch,去掉前面的is,然後就可以正確獲得highSearch的值了
jsp頁面改為
<input id="searchInfo.highSearch" name="searchInfo.highSearch" value="true" type="hidden" />
bean類的屬性改為
private boolean highSearch;
public boolean isHighSearch() {
return highSearch;
}
public void setHighSearch(boolean highSearch) {
this.highSearch = highSearch;
}
總結出,javabean的屬性命名,如果是boolean類型的屬性,不要命名為is開頭,這樣會避免一些不必要
的錯誤