注意问题: commandButton和commandLink需要在<h:form>标签内使用才有效,默认是ajax提交,可通过ajax=‘false’来设置非ajax提交
- MB中方法参数可以加ActionEvent actionEvent,也可以不加,都可以
public
void
buttonAction(){
kbService
= (KBManagementService) SpringContextUtil.getBean(
"kbManagementService"
);
kbService
.addKBItem(
item
);
}
- 页面中 process的作用是局部提交,在<h:form>中不写process的话默认提交整个表单,一般这样就可以了。若使用process可控制局部提交,但是要主要先加 @this ,然后再加 子部分的id, 如: process= "@this testPanel"
代码如下:
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
xmlns:h
=
"http://java.sun.com/jsf/html"
xmlns:f
=
"http://java.sun.com/jsf/core"
xmlns:ui
=
"http://java.sun.com/jsf/facelets"
xmlns:p
=
"http://primefaces.org/ui"
>
<
h:head
>
</
h:head
>
<
h:body
>
<h:form >
<
p:growl
id
=
"growl"
life
=
"2000"
/>
<
p:panelGrid
columns
=
"1"
id
=
"testPanel"
>
<
p:inputText
value
=
"#{testMB.item.type}"
></
p:inputText
>
<
p:inputText
value
=
"#{testMB.item.title}"
></
p:inputText
>
<
p:editor
value
=
"#{testMB.item.content}"
/>
</
p:panelGrid
>
<
p:commandButton
process= "@this testPanel"
value
=
"Submit"
update
=
"growl"
actionListener
=
"#{testMB.buttonAction}"
/>
</h:form>
</
h:body
>
</
html
>
/**
*
*/
package com.kb.mb;
import javax.faces.bean.ManagedBean;
import javax.faces.event.ActionEvent;
import com.kb.domain.KnowledgeItem;
import com.kb.service.KBManagementService;
import com.kb.util.SpringContextUtil;
/**
* @author shipengfei
*
*/
@ManagedBean(name="testMB")
public class Test {
private KBManagementService kbService;
private KnowledgeItem item = new KnowledgeItem();
public Test() {
super();
}
public void buttonAction(){
System.out.println("come in...");
System.out.println("value..." + item.getTitle());
kbService = (KBManagementService) SpringContextUtil.getBean("kbManagementService");
kbService.addKBItem(item);
System.out.println("end....");
}
public KnowledgeItem getItem() {
return item;
}
public void setItem(KnowledgeItem item) {
this.item = item;
}
public KBManagementService getKbService() {
return kbService;
}
public void setKbService(KBManagementService kbService) {
this.kbService = kbService;
}
}