3.创建显示审核信息的JSP页面
用来显示审核信息的页面为checkshow.jsp,该页面通过一个表单显示被审核信息的详细内容,并提供了“通过审核”与“删除信息”两个提交按钮。单击“通过审核”按钮,表单触发admin_Check动作,将由AdminAction类中的Check()方法来处理该请求;单击“删除信息”按钮,表单触发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>信息内容:</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属性来指定表单触发的Action动作,则默认触发当前请求中的Action动作。
通过该submit标签的action属性设置表单触发的Action动作为admin_Check。
通过该submit标签的action属性设置表单触发的Action动作为admin_Delete。
4.在AdminAction类中创建信息审核的Check()方法
Check()方法将实现信息审核的操作。在该方法中,先获取请求中传递的信息ID值,然后生成SQL语句,最后调用业务处理对象的OpUpdate ()方法实现信息审核操作。其实现代码如下:
例程67 代码位置:光盘\TM\01\src\com\yxq\action\AdminAction.java
/* 功能:管理员操作-审核信息(更新数据库) */
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); //更新数据表,实现信息审核操作
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节中配置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>元素用来指定要执行的方法。若程序返回由该<result>元素指定的视图,则会生成如下请求:https://localhost:8080/CityInfo/ admin_*!ListShow.action。
该<result>元素用来指定信息删除成功后返回的视图,若程序返回由该<result>元素指定的视图,则会生成如下请求:https://localhost:8080/CityInfo/admin_ListShow.action。
1.11.5 信息付费设置的实现过程
信息付费设置用到的数据表:tb_info。
根据信息付费设置功能介绍,进行信息付费设置操作,需要先查询出需要进行付费设置的信息,在页面中显示需要进行付费设置信息的详细内容,然后管理员通过单击“设为付费”按钮,完成信息付费设置操作。实际上,信息付费设置的实现与信息审核的实现是相同的,只不过在查询被操作的信息时,信息审核操作的实现,是将要查询信息的ID值在超链接中传递,而信息付费设置需要管理员向表单中输入信息ID值,然后提交表单进行传递。下面介绍信息付费设置的实现过程。
1.在侧栏对应的right.jsp页面中编写实现付费设置页面的代码
该编码要实现一个表单,在表单中提供一个文本输入框和一个提交按钮,文本框用来接收管理员输入的信息ID值。实现代码如下:
例程69 代码位置:光盘\TM\01\pages\admin\view\right.jsp
<!-- 设置已付费信息 -->
<form action="admin_SetMoneyShow.action">
<tr><td>
<table>
<tr><td>请输入要设为已付费状态的信息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的参数的值,也可以写成${param.moneyID}的形式。
根据在cityinfo.xml文件中对admin_*.action的配置,上述代码实现的表单被提交后,将由AdminAction类中的SetMoneyShow()方法进行处理。
2.在AdminAction类中创建SetMoneyShow()方法
该方法用来显示需要进行付费设置的信息的详细内容。在该方法中,首先需要获取通过表单传递的信息ID值,然后生成查询SQL语句,最后调用业务处理对象的OpSingleShow()方法返回封装信息的InfoSingle类对象。在此之前,需要验证是否输入了信息的ID值和ID值是否为数字格式,该验证可在validateSetMoneyShow ()方法中实现,具体代码可查看本书附带光盘。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(); //创建业务对象
infoSingle=myOp.OpSingleShow(sql, params); //返回InfoSingle类对象
3.创建显示付费信息的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>信息内容:</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类中创建付费设置的SetMoney ()方法
SetMoney()方法将实现付费设置的操作。在该方法中,首先获取表单中传递的信息ID值,然后生成SQL语句,最后调用业务处理对象的OpUpdate ()方法实现付费设置的操作。关键代码如下:
例程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(); //创建业务对象
int i=myOp.OpUpdate(sql, params); //执行付费设置操作