做了几乎一年的Eclipse RCP开发,最近要做一网站项目,我选择webwork,这也是我第一次使用webwork。
感觉webwork默认的 dispatcher manager 要求的URL太丑了,多了个.action,看起来很不舒服。我想找一个类似 rails 那样的
找呀找,让我找到 RestfulActionMapper 这个类,符合我的要求。
我在页面中使用 VTL, 没有用 ww 的 标签。这样根据 action 生成 url 怎么办呢? 我不想硬编码。
于是我在一个 BaseAction 中写下以下代码:
java 代码
- public abstract class BaseAction extends ActionSupport implements ServletRequestAware {
-
- protected HttpServletRequest request;
- protected Helper helper;
-
- public void setServletRequest(HttpServletRequest request) {
- this.request = request;
- }
-
- public Helper getHelper() {
- if (helper == null) {
- helper = new Helper();
- }
- return helper;
- }
-
- public class Helper implements Serializable {
- private static final long serialVersionUID = 1L;
-
- public String url(String action, String params) {
- String[] parts = params.split(",");
- Map
- for (String part : parts) {
- String[] t = part.split(":");
- map.put(t[0].trim(), t[1].trim());
- }
-
- ActionMapper manager = ActionMapperFactory.getMapper();
- ActionMapping mapping = manager.getMapping(request);
- mapping.setNamespace(request.getContextPath() + "/");
- mapping.setName(action);
- mapping.setParams(map);
- return manager.getUriFromActionMapping(mapping);
- }
- }
- }
我想在我的前台页面,这样产生 url:
xml 代码
可是,它并没有产生像这样的 url:
xml 代码
- http://.../shops/region/1
于是我又找呀找,找到了 RestfulActionMapper 的代码:
竟然是这样:
java 代码
- ...
- public String getUriFromActionMapping(ActionMapping mapping) {
- String base = mapping.getNamespace() + mapping.getName();
- for (Iterator iterator = mapping.getParams().entrySet().iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- String name = (String) entry.getKey();
- if (name.equals(mapping.getName() + "Id")) {
- base = base + "/" + entry.getValue();
- break;
- }
- }
-
- return base;
- }
- ...
小弟首次用 webwork ,比较愚昧
可是不能这样算了(搞不定这些,老板会骂呀), 我写了下面代码:
java 代码
- public class BetterRestfulActionMapper extends RestfulActionMapper {
-
- @SuppressWarnings("unchecked")
- @Override
- public String getUriFromActionMapping(ActionMapping mapping) {
- String url = mapping.getNamespace() + mapping.getName();
- System.out.println(url);
- Map
- String idKey = mapping.getName() + "Id";
- String idValue = params.get(idKey);
- if (idValue != null) {
- url = url + "/" + idValue;
- }
- for (Entry
- if (!entry.getKey().equals(idKey)) {
- url = url + "/" + entry.getKey() + "/" + entry.getValue();
- }
- }
-
- return url;
- }
- }
然后,我修改了 webwork.properties 文件
xml 代码
- webwork.mapper.class=com.longthsoft.deliver.dispatcher.mapper.BetterRestfulActionMapper
问题算是解决了, 可是我想知道你们都是怎么办的?
初次用 webwork,还望各位老手多多指教。
小弟成长的路上有你们伴随,幸福无比!
分享到:
相关推荐
NULL 博文链接:https://decao.iteye.com/blog/2414944
java工具实现类-根据网站链接url,生成二维码图片,存放本地目录
ios 对具体url生成一个ipa
通过网页url地址生成jpg图片,解决了32、64位运行环境问题
url网址直接生成完整图片,不论网页多宽多长都可以生成完整的图片,速度快,体积小,无需安装,下载即可使用!
通过URL 把网页生成图片,保存到本地,功能强大,好用简单。 适合做档案保存,影像系统等 使用
此功能是通过URL将页面生成静态的html文件
UrlBuilder 链式风格的URL生成器,简单、直观、易用、安全
Fakeimg.pl 是一个使用 URL 生成图像的小工具。选择大小、颜色,甚至文本 如何使用 您只需将您的图片尺寸放在我们的 URL 之后。只有第一个参数是强制性的。还有一些选项,您可以传递文本或更改某些颜色。颜色必须是...
2.使用方式:python 脚本名 url [可选参数s:数字] [可选参数c:True/False] 3.可选参数s的作用:指定从第几个'/'(不计算'://'中的'/')之前的字符串作为前缀,之后的正则化 默认为1 如:...
Data Url生成工具C#版 第二版完整源码下载 主要解决以下问题: DATA URL两种生成方式,C#和HTML5 两者同一张生成的base64编码貌似不一样,能有什么方法让他们达成一致吗”。   其次,在研究这个问题时...
URL Generator(URL生成器)是来自国外的一款URL生产工具,URL Generator界面整洁、功能强大,能够一键生产URL,快捷方便、小巧又实用,URL Generator将根据您输入的字段值创建一个URL列表,然后可以从程序中保存URL...
随机生成URL:随机生成URL的格式为:com.google.maps.uk 每个部分称为子串,即“com”“google”“maps”“uk”均为子串,子串之间以“.”分割,URL的最短长度为1,即为只包含1个子串,如:com。 URL的最大长度为32...
该程序用来批量生成某一网站的URL,能够用于爬虫应用。洗
根据指定的URL 生成HTML文档 服务器程序 生成HTML 首页优化
用Visual Studio 2010编写Data Url生成工具C#源码,详细请参考:http://blog.csdn.net/testcs_dn/article/details/30141045
url生成二维码
主要介绍了Java实现的生成二维码和解析二维码URL操作,结合实例形式分析了Java创建与解析二维码,以及文件读写等相关操作技巧,需要的朋友可以参考下
打开网站直接运行test.aspx,近期在做url生成长图,网上查了下资料c#太少了,都是winform的,为了让.net 同学可以快速上手指定url生成长图少走弯路,或者做爬虫提供思路,把我研究的结果发给大家,直接使用,相互...
chrome地址栏url二维码生成工具离线安装包 离线安装方法可以百度