`

Wicket2.0新功能预览:通过Html配置控件

阅读更多
Wicket一向遵循一个原则--"约定重于配置",所以它一般情况下是通过规则来处理各种情况,但是不可否认的是,配置永远有它的重要性,完全通过规则来完成功能并不能满足所有的需求,所以在Wicket2.0中添加了配置方面的内容,可喜的是,新引入的配置功能并不复杂,也没有引入新的配置文件,而是通过Html来完成。
来看一下如下的一段Html代码:

manage
这是一个功能连接,如果用户已经登录成功,而且是管理员,则通过点击这个连接可以管理系统,但是如果没有登录就不允许这个连接出现。在1.X要通过在代码中编写相应的处理逻辑,将角色写死在代码中,如果以后出现需求上的变改,就需要修改代码,会比较麻烦(当然也可以写在配置文件中,然后再读取,但这样会引入新的配置文件,也比较麻烦)。在2.0中就可以将角色信息写在Html标签的属性中,这样就可以通过代码取得相关的信息,避免了硬编码。
下面是2.0风格的标签定义:

manage

这样开发人员就可以在代码中通过控件的getMarkupAttributes()取得所有在Html中定义的各种扩展属性,得知当前连接需要manager或者admin角色才能使用,如果出现需求变改,就不再需要更改代码,只需要修改相应的Html的role属性就可以完成功能的修改。而且这种非标签属性的添加,并不影响美工MM使用可视化设计器设计Html页面。
这样在不引入配置文件的前提下,使得Wicket也支持配置,可以想见,这个功能将有效的增强Wicket的灵活性,并有效的简化代码开发。
通过在Html中引入属性作为配置项,可以更加高效的完成以下功能:
控制对象的输出,如通过属性指定日期的输出格式。
通过属性编写表达式,来定制输出条件和样式等信息。
更多的功能还在探索中......
分享到:
评论
11 楼 hanfeng 2007-06-21  
wicket是使用HTML格式做配置文件,但这个文件在客户端是看不到源码的(像jsp一样),更没有办法修改了。
10 楼 wl95421 2007-05-14  
就算你看到了role这个属性
又有什么意义呢?

首先你必须这个角色才能看到内容,即使你修改了html,也不可能将它上传到WEB-INF\下面吧

所以无论是否可以看到这个内容,都不会影响系统完全。
9 楼 sorphi 2007-05-11  
Frederick 写道
这种配置方式会否带来一个后果,即可以通过获取页面的html源代码,然后修改其role熟悉的方式来hack系统。比如,本来某个用户只有manager角色,而没有admin的角色,其html如下:
<br />
<a href="#" wicket:id="manageLink" role="manager,admin">manage</a> <br />
<br />

现在,我通过浏览器获取其页面源代码后,手工把这一段修改为:
<br />
<a href="#" wicket:id="manageLink" role="manager,admin">manage</a> <br />
<br />


那位解答一下,我现在正在考察是否要使用Wicket来开发我们公司的项目。



你在浏览器中输入

http://host/hackme.jsp,一般看到的是html内容还是jsp源代码?

8 楼 Frederick 2007-05-11  
不好意思,搞错了,只有manager角色的代码应该是:
<br />  
<a href="#" wicket:id="manageLink" role="manager">manage</a> <br />  
<br />  


手工hack以后的代码应该是:
<br />  
<a href="#" wicket:id="manageLink" role="manager,admin">manaer</a> <br />  
<br /> 
7 楼 Frederick 2007-05-11  
这种配置方式会否带来一个后果,即可以通过获取页面的html源代码,然后修改其role熟悉的方式来hack系统。比如,本来某个用户只有manager角色,而没有admin的角色,其html如下:
<br />
<a href="#" wicket:id="manageLink" role="manager,admin">manage</a> <br />
<br />

现在,我通过浏览器获取其页面源代码后,手工把这一段修改为:
<br />
<a href="#" wicket:id="manageLink" role="manager,admin">manage</a> <br />
<br />


那位解答一下,我现在正在考察是否要使用Wicket来开发我们公司的项目。
6 楼 strongkill 2007-03-31  
我一直都在struts.覺得還可以啊.就是比較麻煩.
現在2.0應該簡單了很多.可現有的專案都不可能轉到2.0.
5 楼 xmlspy 2007-03-30  
aninfeel 写道
为什么那么多人用struts,我看过spring mvc,看过jsf,只有看struts的时候总是一头露水,郁闷死了



哈哈哈,  我也一直用spring mvc,从来没用过struts,
4 楼 minimu 2007-03-30  
这样做侵入性太强了吧
3 楼 aninfeel 2007-03-25  
为什么那么多人用struts,我看过spring mvc,看过jsf,只有看struts的时候总是一头露水,郁闷死了
2 楼 icefire 2007-01-12  
期待2.0能被大量应用!
1 楼 netfly 2007-01-12  
引用
这样开发人员就可以在代码中通过控件的getMarkupAttributes()取得所有在Html中定义的各种扩展属性,得知当前连接需要manager或者admin角色才能使用,如果出现需求变改,就不再需要更改代码,只需要修改相应的Html的role属性就可以完成功能的修改。

请问是否支持可编程配置?因为权限系统是我自己开发的。

相关推荐

Global site tag (gtag.js) - Google Analytics