举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > js值改变事件 JSF 值更改事件示例

js值改变事件 JSF 值更改事件示例

2023-06-02 08:20 Java教程

js值改变事件 JSF 值更改事件示例

js值改变事件

js值改变事件是指当js中的值发生改变时,会触发一个事件,这个事件就是js值改变事件。

js值改变事件的作用是当js中的值发生改变时,能够让程序自动执行一些代码,实现对页面的动态修改。例如:当用户在表单中输入内容时,就会触发一个js值改变事件,然后程序就会根据用户输入的内容来动态修改页面上的内容。

// 例子1
$('#input').on('change', function(){  // 监听input元素的change事件
    var value = $(this).val();  // 获得input元素的value值
    $('#result').html(value);  // 将value值显示到result元素上
});
// 例子2
$('#select').on('change', function(){  // 监听select元素的change事件
    var value = $(this).val();  // 获得select元素选中option的value值

    if(value == '1'){   // 判断value是否为1,如果是则执行下面代码

        $('#result').html('你选中了1');

    }else if(value == '2'){   // 判断value是否为2,如果是则执行下面代码

        $('#result').html('你选中了2');

    }else{   // 否则执行下面代码

        $('#result').html('');

    }    
});    														   

JSF 值更改事件示例

JSF教程 - JSF值更改事件示例


我们可以处理h:inputText或h:selectOneMenu的值更改事件。

要注册事件处理程序侦听器,请传递UI组件的valueChangeListener属性中的托管bean方法的名称。

或者实现ValueChangeListener接口,并将实现类名称传递给UI Component的valueChangeListener属性。

以下代码显示如何将方法从Managed Bean注册到valueChangeListener方法

public void localeChanged(ValueChangeEvent e){
   //assign new value to country
   selectedCountry = e.getNewValue().toString(); 
}

注册方法

<h:selectOneMenu value="#{userData.selectedCountry}"  onchange="submit()" 
   valueChangeListener="#{userData.localeChanged}" >
   <f:selectItems value="#{userData.countries}" />
</h:selectOneMenu>

以下代码显示了如何实现ValueChangeListener。

public class LocaleChangeListener implements ValueChangeListener {
   @Override
   public void processValueChange(ValueChangeEvent event)
      throws AbortProcessingException {
     //access country bean directly
     UserData userData = (UserData) FacesContext.getCurrentInstance().
        getExternalContext().getSessionMap().get("userData"); 
     userData.setSelectedCountry(event.getNewValue().toString());
   }
}

并注册到f:valueChangeListener标签。

<h:selectOneMenu value="#{userData.selectedCountry}" onchange="submit()">
   <f:valueChangeListener type="com.tutorialspoint.test.LocaleChangeListener"
      />
   <f:selectItems value="#{userData.countries}" />
</h:selectOneMenu>

例子

以下代码来自demo.xhtml。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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">
    <h:body>
    <h:form>
        Selected country locale : 
        <h:inputText id="country" value="#{country.localeCode}" size="20" />
        Select a country {method binding}: 
        <h:selectOneMenu value="#{country.localeCode}" onchange="submit()"
          valueChangeListener="#{country.countryLocaleCodeChanged}">
             <f:selectItems value="#{country.countryInMap}" />
           </h:selectOneMenu>
        Select a country: 
        <h:selectOneMenu value="#{country.localeCode}" onchange="submit()">
          <f:valueChangeListener type="cn..common.MyValueChangedListener" />
             <f:selectItems value="#{country.countryInMap}" />
           </h:selectOneMenu>      
    </h:form>
    </h:body>
</html>

以下代码来自MyValueChangedListener.java。

package cn..common;


import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;
 
public class MyValueChangedListener implements ValueChangeListener{

  @Override
  public void processValueChange(ValueChangeEvent event)
      throws AbortProcessingException {
    
    UserBean country = (UserBean) FacesContext.getCurrentInstance().
      getExternalContext().getSessionMap().get("country");

    country.setLocaleCode(event.getNewValue().toString());
    
  }
  
  
}

下面的代码来自UserBean.java。

package cn..common;


import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ValueChangeEvent;
 
@ManagedBean(name="country")
@SessionScoped
public class UserBean implements Serializable{
  private static final long serialVersionUID = 1L;
  private static Map<String,String> countries;
  private String localeCode = "en"; //default value 
  static{
    countries = new LinkedHashMap<String,String>();
    countries.put("United Kingdom", "en"); //label, value
    countries.put("French", "fr");
    countries.put("German", "de");
  }
  public void countryLocaleCodeChanged(ValueChangeEvent e){
    localeCode = e.getNewValue().toString();
  }
  public Map<String,String> getCountryInMap() {
    return this.countries;
  }
  public String getLocaleCode() {
    return localeCode;
  }
  public void setLocaleCode(String localeCode) {
    this.localeCode = localeCode;
  }
}
下载 Value_Changed_Event.zip

运行

将生成的WAR文件从目标文件夹复制到Tomcat部署文件夹,并运行Tomcat-Install-folder/bin/startup.bat。

Tomcat完成启动后,在浏览器地址栏中键入以下URL。

http://localhost:8080/simple-webapp/demo.xhtml


阅读全文
以上是名动网为你收集整理的js值改变事件 JSF 值更改事件示例全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们