1)web环境下,spring,jsf环境配置问题:
1-1)1web.xml里配置spring的web.context.ContextLoaderListener;
1-2)faces-config.xml里配置org.springframework.web.jsf.DelegatingVariableResolver链接jsf和spring的beans访问环境的代理程序,spring.xml
1-3)managed-bean managed-property 的值好像不能指定为接口class??!
1-4)自动生成bean然后移动目录导致,userdaohibernate里的finderbyid里的实体bean class 字符串错误。
1-5)No state saving method defined, assuming default server state saving ,打开face的client存储选项。在 web里添加:???未下定论,可能是加sessionid在url后面??!!
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
1-6)jsf表单按钮提交时,如果数据有校验,校验不通过时,command里的action的方法不会执行。页面不会按照正常配置跳转。这时最好捕获消息。
1-7)使用tanhawk组件的Callendar需要配置web.xml 的:如果是虚拟目录前必须加/donuts/
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
</filter-mapping>
1-8)测试jsf页面时,改jsf表单标签时,需要重新打开窗口测试。。不然原来客户端页面内容状态仍然存在。
1-9)最好的paged sorted datamodel org.apache.myfaces.trinidad.model.CollectionModel(数据模型) Tag标签()
<tr:table>
<tr:column>
<f:facet name="header">
<tr:outputText value="Firstname"/>
</f:facet>
...
</tr:column>
<tr:column headerText="Lastname">
...
</tr:column>
</tr:table>
1-10)不能去掉web.xml 不然找不到spring bean<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
1-11)hibernate对象关联多对多双向关联时,set或bag的inverse="true"只能单方面设置,双方都设置inverse="true"则关联表数据写不进去。
1-12)facelet环境调用spring-bean:
FacesContext ctx=FacesContext.getCurrentInstance();
StudentDAO studao=(StudentDAO)ctx.getApplication().getVariableResolver().resolveVariable(ctx,"StudentDAO");
studao.addTeacher();
1-13)servlet环境调用spring-bean:
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(application);
GroupDAO gdao=(GroupDAO)ctx.getBean("GroupDAO");
gdao.addRole();
1-14)hibernate关系映射中,要想及时取到many-to-one的数据,必须设置属性:outer-join="true"
1-15)hibernate-jsf-数据库数据字典终于成型了,采用many-to-one模型结构。
label显示:#{Test.child.parent.id}
修改提供选择<h:selectOneMenu id="parent" value="#{Test.child.parent.id}" required="true">
1-16)hbm-dll工具使用时,总是drop原来数据库,然后创建新的数据库,并且在数据库里也创建关联。
但数据库关联导致hibernate删除相关数据(如字典数据)出错,所以可能需要手工清除数据库关联。
如果保留数据库关联,那么要删除关联数据必须先修改与这些字典的关联数据。才能删除。这样有利于保证数据库完整性。
1-17)<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:url value='/styles/xerllent.css'/>能解决虚拟目录路径问题。
1-18)使用immediate属性可以略过验证,如下:
<h:commandButton action="cancel" value="Cancel" immediate="true" />
当immediate为ture的时候, validation 和 update model phases被跳过了,JSF生命周期直接到
Invoke Application 阶段. 注意: 在这种情况下上面的"action"是必须的:如果没有该属性
(or null is returned from action method) 则验证将会发生.
1-19) 10、在JSF中应用JS 在JSF中应用javascript在提交前做一些客户端的验证或修改DOM动作时,有两种常用方法
1、在form中添加onsubmit属性
<h:form onsubmit="return JS()">
……
</h:form>
2、在commandButton中添加onclick属性
<h:commandButton onclick="return JS()"/>
注意:JS在验证失败(即不希望提交时)必须return false,否则都会提交。