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