wicket

1.wicket中的html页面控制类需要和页面文件的路径和名称相关联,也就是说它们是按照wicket中定好的规则进匹配的,而且每个控制html页面控制类必须继承wicket.markup.html.WebPage类,如com.david.chen.sample中的HelloPage.java是用于控制com.david.chen.sample中的HelloPage.html的;wicket中的每个组件的ID不能相同,就是ID号只能对应页面模板中的一个相应的控件,而不能对应两个或更多。

2.Model是用来给控件提供数据和显示内容的,用户可以自定义model的实现,必须继承wicket.model.IModel接口,Model并不代表真正的数据类型,它只提供模型层的对外接口,外部对象要通过getObject来取得真正的数据,然后进行相应的处理。
Application对象用于在系统管理相关的配置,是系统的关键。Application对象控制类文件的名称不存在默认的规则限制,只需要在web.xml中配置好就可以了。

3.wicket的事件驱动模式,由存在于B/S客户端的控件输入提交的URL并指明Listener的类型,由服务器根据

4.Listener的类型调用相应的方法。IRequestListerner是Listener的基接口。

5. wicket提供了一个ISessionStore并为其提供了一个默认实现HttpSessionStore,用于将控件的相关信息及Model保存在HttpSession中,做有效的状态管理。用户请求结果的Page会被放到一个PageMap对象中由ISessionStore保存,wicket提供PageMap的一个管理策略接口wicket.session.pagemap.IPageMapEvictionStrategy,可以通过这个接口来设置PageMap的存放数量,用WebApplication的getSessionSetting来取得和设置这个策略的实现,默认情况下PageMap可以存放5个Page对象.

6.wicket的html输出会对"<>"进行自动转义,如果需要输出"<>"符合,需要调用setEscapeModelStrings(false);Label对象可以输出字符串或任意对象,如果是对象是则调用对象的toString()方法输出信息。

7.MutiLineLable可以对"\n"进行自动转换,转换为
。wicket的include控件只能包含静态页面。

8.wicket的表单验证应该说和Struts大同小异,还不支持客户端验证,所以要使用Ajax进行验证或Wicket-Stuff。

9.wicket中的checkBoxMutipleChoice,RadioChoice等控件不能直接输出名称只能显示值,采用IChoiceRender接口可以解决这个问题。

10.wicket中的DatePicker存在于wicket-extensions包中,所以Web程序的lib中要包含该包。

11.wicket中的Ajax应用,先通过普通的wicket应用在客户端输出HTML(HTML元素需要带有wicket:id属性),软化由浏览器端向远程服务器发出Ajax请求,然后在服务器将相应的wicket控件输出为HTML,当浏览器端的Js程序收到相应的Html后,就根据wicket:id覆盖原有的HTML元素。

12.wicket提供了一个IAuthorizationStrategy接口用来处理权限问题。wicket为IAuthorization提供了一个默认的ALLOW_ALL实现,它默认支持所以的操作。用户如果要进行权限控制,只需要实现这个接口,然后通过Application的ISecuritySetting来注入,这样wicket在每个控件输出时,调用isActionAuthorized反复检查Renderer和Enabled是否允许执行。

13.wicket中的css样式文件应该放置在根目录。

14.在session中存储对象,需要继承wicket的session接口。
public class MySession extends WebSession {
   public MySession(WebApplication application) {
      super(application);
   }
   private String myAttribute;
   // ... getters and setters
   //把需要加到session的对象加入到这里并提供getter,setter
}
在Application类中重写以下两个方法
protected ISessionFactory getSessionFactory() {
    return this.sessionFactory;
}
public Session newSession() {
    return new MySession(WebApplication.this);
}


15.将wicket中的页面统一放置和管理的处理办法
首先定义一个IResourceStreamLocator的类:

public class WebPageResourceStreamLocator extends AbstractResourceStreamLocator {
    private IResourceFinder finder;

    public WebPageResourceStreamLocator(IResourceFinder finder) {
        this.finder = finder;
    }

    protected IResourceStream locate(final Class clazz, final String path) {
        final URL file = finder.find(trimFolders(path));
        if (file != null) {
            return new UrlResourceStream(file);
        }
        return null;
    }

    private String trimFolders(String path) {
        return path.substring(path.lastIndexOf("/") + 1);
    }
}
然后, 重写Application.init()方法并加入新的IResourceStreamLocator:

public class CizelgemApplication extends AuthDataApplication {
    @Override
    protected void init() {
        super.init();
        CompoundResourceStreamLocator locator =
            (CompoundResourceStreamLocator)getResourceSettings().getResourceStreamLocator();
        WebApplicationPath resourceFinder = (WebApplicationPath) getResourceSettings

().getResourceFinder();
        resourceFinder.add("src/main/webapp"); //this path should be changed

        locator.add(0, new WebPageResourceStreamLocator(resourceFinder));
    }

16.button的setDefaultFormProcessing(false)方法可以在表单提交的时候只调用button的onSubmit方法,

当true的情况将先调用form的onSubmit方法再调用button的onSubmit方法,默认为true。

17.FeedbackMessage进行筛选和排列显示的顺序,可以通过设置FeedbackPanel的sortingComparator属性或者,提供一个重写了FeedbackPanel.getFeedbackMessageModel()的FeedbackMessagesModel实现。

String contextPath = getApplication().getApplicationSettings().getContextPath();
   
getRequestCycle().setRequestTarget(new RedirectRequestTarget(contextPath +

"/path/to/legacyJspFile.jsp"));
可以定位到不属于wicket应用上的页面和资源。

18.wicket properties文件,包括Application的properties文件和单页面的properties文件,在

Application.properties中配置的信息是全局的配置信息,单页面的properties信息只对该页面有效,如

果该页面没有配置单页面properties信息则再转到Application.properties中查找,当单页面的

properties存在多个时,根据系统的语言选择相应的properties文件。

你可能感兴趣的:(Ajax,应用服务器,浏览器,配置管理,wicket)