【Primefaces】commandButton/commandLink的一些注意问题

本文介绍JSF中commandButton和commandLink组件的正确用法,包括它们必须置于<h:form>标签内及如何通过process属性实现局部提交。此外,还展示了如何在Managed Bean中处理按钮点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意问题: commandButton和commandLink需要在<h:form>标签内使用才有效,默认是ajax提交,可通过ajax=‘false’来设置非ajax提交
  1. MB中方法参数可以加ActionEvent actionEvent,也可以不加,都可以
      public void buttonAction(){
            kbService = (KBManagementService) SpringContextUtil.getBean("kbManagementService");
           kbService.addKBItem(item );
      }
  1. 页面中 process的作用是局部提交,在<h:form>中不写process的话默认提交整个表单,一般这样就可以了。若使用process可控制局部提交,但是要主要先加 @this ,然后再加 子部分的id, 如: process= "@this testPanel"

代码如下:

<htmlxmlns="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;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值