這裏是我的形式如何在struts2表單中使用搜索和保存按鈕?
<s:form action="changeStatus">
<s:div class="table">
<s:textfield name="custId" label="CUSTOMER ID" />
<s:textfield name="lifewardsCard" label="LIFE WARDS CARD NUMBER"
size="20" />
<s:textfield name="clientNo" label="CLIENT NUMBER" />
<s:textfield name="custName" label="CUSTOMER NAME" />
<s:textfield name="cardExpiryDate" label="CARD EXPIRY DATE(MMYYYY)" />
<s:select name="status" label="CARD STATUS"
list="#{'1':'Active', '2':'Inactive'}" />
<tr>
<td><s:submit value="search" theme="simple" /></td>
<td><s:submit value="save" theme="simple" /></td>
<td><s:submit type="button" theme="simple"
onclick="clear();return false;" value="clear" /></td>
</tr>
</s:div>
</s:form>
用戶將輸入領域CUSTID並點擊搜索按鈕 我能夠從數據庫中獲取的值,並將其 在頁面上,但我想要做的是顯示在後他可以編輯數據的數據,並且應該能夠通過點擊保存按鈕來保存數據。 這裏是我的xml配置
<action name="changeStatus" class="com.struts.lifewardscard.ChangeAction">
<result name="input">ChangeCardStatus.jsp</result>
<result name="success">ChangeCardStatus.jsp</result>
</action>
,這裏是我的動作類
public class ChangeAction extends ActionSupport implements ModelDriven {
CardStatusForm cardSform=new CardStatusForm();
public String execute() throws Exception{
String clientId=null;
HttpServletRequest request = ServletActionContext.getRequest();
getCardHolderDetails();
return "success";
}
private void getCardHolderDetails() {
Connection c = null;
Boolean empty = true;
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S");
// Format date into output format
DateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy");
try {
c = Conexion.getConnection();
CallableStatement cst = c
.prepareCall("{call P_GET_CARD_DETAIILS(?,?)}");
cst.setString(1, cardSform.getCustId());
cst.registerOutParameter(2, OracleTypes.CURSOR);
cst.executeUpdate();
ResultSet rs = (ResultSet) cst.getObject(2);
while (rs.next()) {
cardSform.setLifewardsCard(rs.getString(1));
cardSform.setClientNo(rs.getString(2));
if(rs.getString(3).equalsIgnoreCase("active"))
{
cardSform.setStatus(1);
}else
{
cardSform.setStatus(2);
}
cardSform.setCustName(rs.getString(4));
cardSform.setCardExpiryDate(rs.getString(5));
System.out.println(inputFormat.parse(rs.getString(6)));
empty = false;
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public Object getModel() {
// TODO Auto-generated method stub
return cardSform;
}
}
即使我可以寫,可以節省在動作類中的數據的方法,我不找到一個方法來調用該方法與撥打其他方法getCardHolderDetails()
。
@AleksandrM你能否詳細說明如何使用'方法:'前綴,爲什麼OP沒有在他/她的問題中使用它?我真的很喜歡使用這個前綴,而不是醜陋的'action:'或者更好,沒有任何前綴。 –
@RomanC:你在那些問題中找到了方法前綴的位置? ;)無論如何來自文檔:*要使用方法屬性(使用指向不同操作方法的多個提交按鈕),必須將struts.enable.DynamicMethodInvocation設置爲true,但這會導致安全漏洞 - 謹慎使用!*。 –
@AleksandrM由你鏈接,是的,文檔是正確的... –