sudo sh /Tomcat/bin/startup.sh
sudo sh /Tomcat/bin/shutdowm.sh
Struts2的s:if标签很怪异,下面来具体地看看,如何用s:if标签来判断URL中的参数。
访问一个带有URL参数的页面,如:http://localhost:8080/a.jsp?name=xht555
# <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> # <%@ taglib prefix="s" uri="/struts-tags"%> # <html> # <head> # <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> # <title>Struts2 url参数测试</title> # </head> # <body> # <s:property value="#parameters.name"/><!-- 有值 --> # <s:if test="#parameters.name=='xht555'">OK</s:if><!-- 无值 --> # <s:if test="#parameters.name.equals('xht555')">OK</s:if><!-- 无值 --> # </body> # </html>
就上面一个简单的代码,却始终不能进入到IF判断语句中,郁闷了好久,甚至在骂Struts2,一个不智能的作品。
经过大量的查找资料,直到问题发生的第三天,我回过头来偶然又想起了这个问题,才在一个帮助文档中发现。原来Struts2是将URL传的参数封装成一个数组的,也就是说你可以在一个URL传两个同名的参数(即?name=a&name=b),个人觉得这个做的不怎么好,因为一般在传参的时候如果要传数组也不会通过URL方式来处理 。既然传递的是一个数值,那么所有的问题就迎刃而解了。
所以上面的取参数应该改为:
1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2. <%@ taglib prefix="s" uri="/struts-tags"%> 3. <html> 4. <head> 5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 6. <title>Struts2 url参数测试</title> 7. </head> 8. <body> 9. <s:property value="#parameters.name[0]"/><br /><!-- 有值 --> 10. <s:if test="#parameters.name[0]=='xht555'">OK</s:if><br /><!-- 有值 --> 11. <s:if test="#parameters.name[0].equals('xht555')">OK</s:if><!-- 有值 --> 12. </body> 13. </html>
OK,问题搞定!希望碰到此类问题的朋友能有所启发,不要再在这个问题上浪费太多的时间了。
(未完成,待修改)
KAS 0.4.3 [2012/03/23]
Android框架层
MainActivity
游戏主活动
Sound
声音管理器
VideoPlayer
管理视频播放SurfaceView的类
ConfigActivity
继承自PreferenceActivity,配置预设活动。
DeleteResActivity
删除游戏数据的活动
SaveActivity
保存活动类
SaveAdapter
SaveActivity的列表适配器
SaveData
SaveAdapter的数据结构
脚本和插件管理:
Conductor
在单独线程中处理输入事件与ScenarioParser命令读取
Macro
宏,宏映射表的值类型
CallData
调用数据,调用堆栈中的一个条目
ScenarioData
脚本数据
ScenarioParser
脚本解释器,Conductor中单步执行
TagHandlers
TagObject的容器,定义了很多标签的监听器(匿名TagObject子类)
TagObject
标签监听器接口类,除了TagHandlers中定义的匿名子类外,KASPlugin也是TagObject的子类。
KASPlugin
插件类,继承自TagObject(可以监听标签事件),它的类方法管理SystemButton等插件类的实例
SystemButton
插件,继承自KASPlugin,用于创建SystemButtonLayer
UsersInitialize
静态类,游戏开始前安装插件SystemButton。
AnimationScriptParcer
anm脚本加载器
MokaScript
moka脚本运行状态,在MainSurfaceView中使用。
KASFunction
注册一些Moka脚本的内建函数。大多数使用Util类。
精灵层
ButtonLayer
MainSurfaceView的精灵层
ButtonFunc
ButtonLayer的事件监听器
History
MainSurfaceView的精灵层
YesNoDialog
MainSurfaceView的精灵层
KASLayer
MainSurfaceView的精灵层
Layer
MainSurfaceView的精灵层,继承自KASLayer。
MessageLayer
MainSurfaceView的精灵层,继承自KASLayer。
SystemButtonLayer
MainSurfaceView的精灵层,继承自KASLayer。
MessageTextBox
MessageLayer的精灵层。
LinkButton
MessageLayer的精灵层。
全局方法
Util
可以跨脚本与界面执行的全局静态方法。
ByteUtil
Short/int/long与byte[]的相互转换。获取文件扩展名
Config
ResourceManager、Util、Layer、MainSurfaceView、MessageLayer、MainActivity.menuItemData、History的配置
ConfigScript
MokaScript使用的配置,可以覆盖Config的行为。
资源管理
ResourceManager
资源管理器,静态类
ResourceDownloader
资源下载器,ResourceManager中使用
KpcManager
静态类,ResourceManager使用,管理kpc文件
KZipUtil
静态类,用于压缩解压zip格式数据