JSF

来源:互联网 发布:陕西省网络发票查询 编辑:程序博客网 时间:2024/06/07 14:38

1.在eclipse下,开启远程debug模式可在不启动jboss服务器的情况下编辑class并实时生效。

2.使用f:ajax 标签时如果不在<h:commandButton >中指定action,那么<f:ajax excute="somevalue id" render="another value id"/>的执行顺序将是先执行render,然后执行excute

因此需要指定action.

3.通过调试发现,虽然只点击了一次该按钮,但却执行了两次方法。因此在必要时需要加上避免表单重复提交的代码。

4.html5中button默认的类型是submit ,如果需要在表单中作为普通按钮使用须指定type="button"

5.在表格中使用了<ui:repeat>标签,虽然后台数据不为空,但该标签无效。改为<t:dataTable>标签,使用正常。

6.

1.JSF通过ajax传递文本框的值到后台时,后台并没有获取到值,因此在按钮传递ajax事件之前通过js手动赋值,目测是jsf的BUG。

Eg:

function setTitle(){

document.getElementById("ebookTitle").value = document.getElementById("ebookTitle").value;

return true;

}

<h:commandButton id="filter" value="#{msg.BH_Filter}" onclick="return setTitle()"

styleClass="search">

<f:ajax execute="ebookType typeCode eBookTitle searchPanelGroup"

render="eBookHealthcarePanel scrollPanel"

onevent="searchEBookEvent" />

</h:commandButton>

7.apache MyFaces

<t:saveState value=#{action.property}/>

作用,可以保存action的属性。在managedBean的声明周期是request的情况下,当一次请求相应结束,那么该managedbean的属性就会清空,如果再次请求该属性,那么就会报空指针异常。使用<t:saveState>标签可以保存想要保存的属性,这在需要重复使用某属性时非常有用。

8.jsf managedBean中转发

Eg:"/public/appinfo/index.jsf?platform="+appInfo.getPlatform()+"&faces-redirect=true&includeViewParams=true"

9.地址拼接参数传递到后台 并 保持 状态

<f:metadata>

<f:viewParam name="templateId" value="#{templateAction.templateId}" />

</f:metadata>

<t:saveState value="#{templateAction.templateId}" />

10.从页面提交数据到后台时默认都是String类型提交,如需要绑定其他类型需要添加convert="xxx" 属性,例如:<h:selectManyCheckbox id="xxx"  converter="javax.faces.Long" value="#{someBackingBean.xxx}" layout="pagedirection">

11.在后台bean是request的范围的时候,每一次的ajax请求都应当注意请求中所用到的数据是否是空,因为上一次的操作结果默认是不保留的。当数据是空的时候可能会产生不可预知的错误,比如无法发送ajax请求。例如:在某个项目中,我需要更新某条数据,更新之前已经初始化好了一批可选数据,当使用这部分数据时是可以正常提交ajax请求的。但是,如果我按照搜索条件搜索其他的数据之后,再发送更新请求就失败了。因为搜索的业务中,我并没有初始化接收搜索结果的容器。我只在进入编辑页面时初始化了该容器。

12.上一步的ajax请求发生异常--null--接下来的ajax请求无法运作。

0 0
原创粉丝点击