1.ajax4jsf想要显示<h:message/>时,必须在<h:message/>上添加<a4j:outputPanel ajaxRendered="true">
2.如果想刷新<f:verbatim>里面的内容,也需要添加<a4j:outputPanel ajaxRendered="true">。
原理是像<h:message>之类的组件在没有验证或转换错误时页面生成的html代码是没有它们的,所以必须在它们外面再加上一层。当然你可以用其他的如<h:panelGroup>或者<h:panelGrid>之类的组件来替换<a4j:ou ...
jsf 中的 immediate 很烦阿,今天有发现它的一个特性,一般情况下在 jsf生命周期的第6步RENDER_RESPONSE,会调用get方法来完成页面的显示,而如果这个生命周期是由一个 immediate=true 的组件引发的而且是针对同一页面的话,get方法就不会执行。利用这点终于解决了一个问题,不过这是在 portlet下的,而且是a4j的组件,不知道原生的jsf是不是一样。
今天想想可能真的是ajax的原因。而不是jsf 中的 immediate 的特性。
页面 上的 输入组件 的输入值 如果是 null 时(组件的required=false),如果 组件的值是原始类型,页面自然 会出错(converter出错)。 否则 组件的值是对象类型的话,组件的验证器 不会 执行(实验中 自定义的验证器没有执行)。 就是说 在验证器里 对null的情况 是没有办法处理的。
hibernate中get方法和load方法的根本区别在于:如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,那没办法,只能抛异常,所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理。所以如果你知道该i ...
内部类 指在另一个类内部的类,它可以继承外部类或实现接口。除非是在宿主类的非static方法里,不然创建内部类的对象必须使用 OuterClassName.InnerClassName的形式。
......
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.createInnerClass();
}
......
内部类可以声明为 p ...
对一个输入框的输入进行验证,只允许字母和数字,开始是用了<t:validateRegExpr pattern="[A-Za-z0-9]+" message="...".../>, 但后来由于一些原因只得用javascript进行所有的验证。
奇怪的是用/^[\w]+$/ test时完全正确,而/[A-Za-z0-9]+$/则永远是true
- 17:56
- 浏览 (83)
- 评论 (0)
- 分类: javascript学习
今天看到一个网站上的一个有关jsf中的immediate的讨论,一般我们都会认为对于command...和inputinput...immediate的处理是不同的,但有一个人认为其实他们都是相同的,不同的是对于command来说action会提前调用(先于validator),因为action的导航作用才使得页面跳过了后面的验证。听起来有些道理,我特地实验了一下,就是去掉action的返回值,结果证明他的观点是错误的。
今天看core javaserver faces终于知道了原因,因为所有action,不论immediate=true 或者false,都会直接调用Render Respo ...
当ajaxSingle为true时,只是提交当前组件,而对于其他组件是不提交的,它的附带效果就是只对当前组件进行验证,而对其他的组件不会作任何验证。这一点上对于button和link来说感觉和immediate="true"的效果很相似,即跳过所有验证,当然只是效果除此以外它们完全是不同的。
不知道a4j是如何实现的,因为a4j还是遵循jsf的生命周期的,所以估计会有这么一句:FacesContext.getCurrentInstance().renderResponse(),也不知到哪有源码下。
在a4j:support中也有immediate=true 这个属性,工作流程和jsf一样。
作为输入组件,如UInput, immediate="true"时验证会提前,不过我感觉这好像没什么用,因为本来第三步就会执行验证了,提不提早都一样。它的另外一个效果是valueChangeListener会先于第三步process validate 验证执行,这点倒是满有用的。而一般情况下valueChangeListener会在值改变并且通过验证之后即invoke applications阶段才执行,当然会先于action执行的。
1。接口中的函数都是public的,不论写不写明,所以在实现时,也必须加上public修饰。
2。接口中可以定义变量(常量),默认是static final型,所以必须初始化。







评论排行榜