3.創(chuàng)建顯示審核信息的JSP頁面
用來顯示審核信息的頁面為checkshow.jsp,該頁面通過一個表單顯示被審核信息的詳細內(nèi)容,并提供了“通過審核”與“刪除信息”兩個提交按鈕。單擊“通過審核”按鈕,表單觸發(fā)admin_Check動作,將由AdminAction類中的Check()方法來處理該請求;單擊“刪除信息”按鈕,表單觸發(fā)admin_Delete動作,將由AdminAction類中的Delete()方法處理請求。checkshow.jsp的代碼如下:
例程66 代碼位置:光盤\TM\01\pages\admin\info\checkshow.jsp
<s2:form theme="simple">
<input type="hidden" name="checkID" value="<s2:property value="infoSingle.id"/>">
<input type="hidden" name="deleteID" value="<s2:property value="infoSingle.id"/>">
<table>
<tr>
<td><b>審核信息 [ID值:<s2:property value="infoSingle.id"/>]</b></td>
<td colspan="2" align="right"><s2:fielderror/></td>
</tr>
……//省略了顯示其他字段信息的代碼
<tr>
<td>信息內(nèi)容:</td>
<td>
<s2:if test="infoSingle.infoState==1"><s2:set name="forbid" value="true"/></s2:if>
<s2:else><s2:set name="forbid" value="false"/></s2:else>
<s2:submit action="admin_Check" value="√通過審核" disabled="%{forbid}"/>
</td>
<td><s2:submit action="admin_Delete" value="×刪除信息" onclick="return really()"/></td>
</tr>
……//省略了顯示其他字段信息的代碼
</table>
</s2:form>
代碼貼士
該form標簽并沒有設置action屬性來指定表單觸發(fā)的Action動作,則默認觸發(fā)當前請求中的Action動作。
通過該submit標簽的action屬性設置表單觸發(fā)的Action動作為admin_Check。
通過該submit標簽的action屬性設置表單觸發(fā)的Action動作為admin_Delete。
4.在AdminAction類中創(chuàng)建信息審核的Check()方法
Check()方法將實現(xiàn)信息審核的操作。在該方法中,先獲取請求中傳遞的信息ID值,然后生成SQL語句,最后調(diào)用業(yè)務處理對象的OpUpdate ()方法實現(xiàn)信息審核操作。其實現(xiàn)代碼如下:
例程67 代碼位置:光盤\TM\01\src\com\yxq\action\AdminAction.java
/* 功能:管理員操作-審核信息(更新數(shù)據(jù)庫) */
public String Check(){
session.put("adminOP","Check"); //記錄當前操作為“審核信息”
String checkID=request.getParameter("checkID"); //獲取信息ID值
String sql="UPDATE tb_info SET info_state = 1 WHERE (id = ?)";
Object[] params={checkID};
OpDB myOp=new OpDB();
int i=myOp.OpUpdate(sql, params); //更新數(shù)據(jù)表,實現(xiàn)信息審核操作
if(i>0) //審核信息成功
return "checkSuccess";
else{ //審核信息失敗
comebackState();
addFieldError("AdminCheckUnSuccess",getText("city.admin.check.no.success"));
request.setAttribute("mainPage","/pages/error.jsp");
return "UnSuccess";
}
}
5.配置cityinfo.xml文件
對信息審核操作的配置與對信息顯示的操作的配置使用的是同一個配置,可查看1.11.3節(jié)中配置cityinfo.xml文件中的代碼,只不過在該<action>元素中需要增加對<result>元素的配置,來指定信息審核操作成功和失敗后返回的視圖。配置代碼如下:
例程68 代碼位置:光盤\TM\01\WEB-INF\classes\cityinfo.xml
<result name="checkSuccess" type="redirectAction">
<param name="actionName">admin_*</param>
<param name="method">ListShow</param>
</result>
<result name="deleteSuccess" type="redirectAction">
admin_ListShow.action
</result>
<result name="UnSuccess">/pages/admin/view/AdminTemp.jsp</result>
代碼貼士
該<result>元素用來指定信息審核成功后返回的視圖,其中type屬性指定返回視圖的類型,redirectAction表示返回的視圖類型為Action動作;該<result>元素中的第一個<param>元素用來指定返回的Action動作,第二個<param>元素用來指定要執(zhí)行的方法。若程序返回由該<result>元素指定的視圖,則會生成如下請求:https://localhost:8080/CityInfo/ admin_*!ListShow.action。
該<result>元素用來指定信息刪除成功后返回的視圖,若程序返回由該<result>元素指定的視圖,則會生成如下請求:https://localhost:8080/CityInfo/admin_ListShow.action。
1.11.5 信息付費設置的實現(xiàn)過程
信息付費設置用到的數(shù)據(jù)表:tb_info。
根據(jù)信息付費設置功能介紹,進行信息付費設置操作,需要先查詢出需要進行付費設置的信息,在頁面中顯示需要進行付費設置信息的詳細內(nèi)容,然后管理員通過單擊“設為付費”按鈕,完成信息付費設置操作。實際上,信息付費設置的實現(xiàn)與信息審核的實現(xiàn)是相同的,只不過在查詢被操作的信息時,信息審核操作的實現(xiàn),是將要查詢信息的ID值在超鏈接中傳遞,而信息付費設置需要管理員向表單中輸入信息ID值,然后提交表單進行傳遞。下面介紹信息付費設置的實現(xiàn)過程。
1.在側欄對應的right.jsp頁面中編寫實現(xiàn)付費設置頁面的代碼
該編碼要實現(xiàn)一個表單,在表單中提供一個文本輸入框和一個提交按鈕,文本框用來接收管理員輸入的信息ID值。實現(xiàn)代碼如下:
例程69 代碼位置:光盤\TM\01\pages\admin\view\right.jsp
<!-- 設置已付費信息 -->
<form action="admin_SetMoneyShow.action">
<tr><td>
<table>
<tr><td>請輸入要設為已付費狀態(tài)的信息ID:</td></tr>
<tr><td >
<input type="text" name="moneyID" value="${param['moneyID']}" size="24"/>
<input type="submit" value="查詢"/>
</td></tr>
</table>
</td></tr>
</form>
代碼中${param['moneyID']}為JSP的EL表達式,表示獲取請求中名為moneyID的參數(shù)的值,也可以寫成${param.moneyID}的形式。
根據(jù)在cityinfo.xml文件中對admin_*.action的配置,上述代碼實現(xiàn)的表單被提交后,將由AdminAction類中的SetMoneyShow()方法進行處理。
2.在AdminAction類中創(chuàng)建SetMoneyShow()方法
該方法用來顯示需要進行付費設置的信息的詳細內(nèi)容。在該方法中,首先需要獲取通過表單傳遞的信息ID值,然后生成查詢SQL語句,最后調(diào)用業(yè)務處理對象的OpSingleShow()方法返回封裝信息的InfoSingle類對象。在此之前,需要驗證是否輸入了信息的ID值和ID值是否為數(shù)字格式,該驗證可在validateSetMoneyShow ()方法中實現(xiàn),具體代碼可查看本書附帶光盤。SetMoneyShow()方法的關鍵代碼如下:
例程70 代碼位置:光盤\TM\01\src\com\yxq\action\AdminAction.java
String moneyID=request.getParameter("moneyID"); //獲取信息ID值
String sql="SELECT * FROM tb_info WHERE (id = ?)"; //生成SQL語句
Object[] params={moneyID};
OpDB myOp=new OpDB(); //創(chuàng)建業(yè)務對象
infoSingle=myOp.OpSingleShow(sql, params); //返回InfoSingle類對象
3.創(chuàng)建顯示付費信息的JSP頁面
該頁面的編碼與顯示審核信息的JSP頁面的編碼相同,其關鍵代碼如下:
例程71 代碼位置:光盤\TM\01\pages\admin\info\moneyshow.jsp
<s2:form theme="simple">
<input type="hidden" name="moneyID " value="<s2:property value="infoSingle.id"/>">
<input type="hidden" name="deleteID" value="<s2:property value="infoSingle.id"/>">
<table>
<tr>
<td><b>付費設置[ID值:<s2:property value="infoSingle.id"/>]</b></td>
<td colspan="2"><s2:fielderror/></td>
</tr>
……//省略了顯示其他字段信息的代碼
<tr>
<td>信息內(nèi)容:</td>
<td>
<s2:if test="infoSingle.infoState==1"><s2:set name="forbid" value="true"/></s2:if>
<s2:else><s2:set name="forbid" value="false"/></s2:else>
<s2:submit action="admin_SetMoney " value="√設為付費" disabled="%{forbid}"/>
</td>
<td><s2:submit action="admin_Delete" value="×刪除信息" onclick="return really()"/></td>
</tr>
……//省略了顯示其他字段信息的代碼
</table>
</s2:form>
4.在AdminAction類中創(chuàng)建付費設置的SetMoney ()方法
SetMoney()方法將實現(xiàn)付費設置的操作。在該方法中,首先獲取表單中傳遞的信息ID值,然后生成SQL語句,最后調(diào)用業(yè)務處理對象的OpUpdate ()方法實現(xiàn)付費設置的操作。關鍵代碼如下:
例程72 代碼位置:光盤\TM\01\src\com\yxq\action\AdminAction.java
String moneyID=request.getParameter("moneyID"); //獲取信息ID值
String sql="UPDATE tb_info SET info_payfor=1 WHERE (id = ?)"; //生成SQL語句
Object[] params={Integer.valueOf(moneyID)};
OpDB myOp=new OpDB(); //創(chuàng)建業(yè)務對象
int i=myOp.OpUpdate(sql, params); //執(zhí)行付費設置操作