⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 值变事件.htm

📁 java 技术参考汇集超值大礼包
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 1</title>
</head>

<body>

<p>值变事件</p>
<div id="PageContent">
	<table cellSpacing="0" cellPadding="0" width="100%" border="0" id="table3">
		<tr>
			<td class="pagebody" vAlign="top">
			<table style="CLEAR: both" cellSpacing="0" cellPadding="0" width="100%" border="0" id="table4">
				<tr>
					<td class="pagecontent" vAlign="top" width="100%">
					<div class="wiki-content">
						如果使用者改变了JSF输入组件的值后送出窗体,就会发生值变事件(Value Change
						Event),这会丢出一个javax.faces.event.ValueChangeEvent对象,如果您想要处理这个事件,有两种方式,一是直接设定JSF输入组件的valueChangeListener属性,例如:<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">&lt;h:selectOneMenu value=<span class="code-quote">&quot;#{user.locale}&quot;</span>
                  onchange=<span class="code-quote">&quot;<span class="code-keyword">this</span>.form.submit();&quot;</span>
                  valueChangeListener=<span class="code-quote">&quot;#{user.changeLocale}&quot;</span>&gt;

     &lt;f:selectItem itemValue=<span class="code-quote">&quot;zh_TW&quot;</span> itemLabel=<span class="code-quote">&quot;Chinese&quot;</span>/&gt;
     &lt;f:selectItem itemValue=<span class="code-quote">&quot;en&quot;</span> itemLabel=<span class="code-quote">&quot;English&quot;</span>/&gt;
 &lt;/h:selectOneMenu&gt;</pre>
							</div>
						</div>
						<p>
						  为了仿真GUI中选择了选单项目之后就立即发生反应,我们在onchange属性中使用了JavaScript,其作用是在选项项目发生改变之后,立即送出窗体,而不用按下提交按钮;而valueChangeListener属性所绑定的user.changeLocale方法必须接受ValueChangeEvent对象,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>UserBean.java</b></div>
							<div class="codeContent">
								<pre class="code-java"><span class="code-keyword">package</span> onlyfun.caterpillar;

 <span class="code-keyword">import</span> javax.faces.event.ValueChangeEvent;

 <span class="code-keyword">public</span> class UserBean {
    <span class="code-keyword">private</span> <span class="code-object">String</span> locale = <span class="code-quote">&quot;en&quot;</span>;
    <span class="code-keyword">private</span> <span class="code-object">String</span> name;
    <span class="code-keyword">private</span> <span class="code-object">String</span> password;
    <span class="code-keyword">private</span> <span class="code-object">String</span> errMessage;

    <span class="code-keyword">public</span> void changeLocale(ValueChangeEvent event) {
        <span class="code-keyword">if</span>(locale.equals(<span class="code-quote">&quot;en&quot;</span>))
            locale = <span class="code-quote">&quot;zh_TW&quot;</span>;
        <span class="code-keyword">else</span>
            locale = <span class="code-quote">&quot;en&quot;</span>;
    }

    <span class="code-keyword">public</span> void setLocale(<span class="code-object">String</span> locale) {
        <span class="code-keyword">this</span>.locale = locale;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> getLocale() {
        <span class="code-keyword">if</span> (locale == <span class="code-keyword">null</span>) {
            locale = <span class="code-quote">&quot;en&quot;</span>;
        }
        <span class="code-keyword">return</span> locale;
    }

    <span class="code-keyword">public</span> void setName(<span class="code-object">String</span> name) {
        <span class="code-keyword">this</span>.name = name;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> getName() {
        <span class="code-keyword">return</span> name;
    }

    <span class="code-keyword">public</span> void setPassword(<span class="code-object">String</span> password) {
        <span class="code-keyword">this</span>.password = password;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> getPassword() {
        <span class="code-keyword">return</span> password;
    }

    <span class="code-keyword">public</span> void setErrMessage(<span class="code-object">String</span> errMessage) {
        <span class="code-keyword">this</span>.errMessage = errMessage;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> getErrMessage() {
        <span class="code-keyword">return</span> errMessage;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> verify() {
        <span class="code-keyword">if</span>(!name.equals(<span class="code-quote">&quot;justin&quot;</span>) ||
           !password.equals(<span class="code-quote">&quot;123456&quot;</span>)) {
            errMessage = <span class="code-quote">&quot;名称或密码错误&quot;</span>;
            <span class="code-keyword">return</span> <span class="code-quote">&quot;failure&quot;</span>;
        }
        <span class="code-keyword">else</span> {
            <span class="code-keyword">return</span> <span class="code-quote">&quot;success&quot;</span>;
        }
    }
 }</pre>
							</div>
						</div>
						<p>
						  另一个方法是实作javax.faces.event.ValueChangeListener接口,并定义其processValueChange()方法,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>SomeListener.java</b></div>
							<div class="codeContent">
								<pre class="code-java"><span class="code-keyword">package</span> onlyfun.caterpillar;
 ....
 <span class="code-keyword">public</span> class SomeListener <span class="code-keyword">implements</span> ValueChangeListener {
    <span class="code-keyword">public</span> void processValueChange(ValueChangeEvent event) {
        ....
    }
    ....
 }


  然后在JSF页面上使用&lt;f:valueChangeListener&gt;卷标,并设定其type属性,例如:

{code:borderStyle=solid}
 &lt;h:selectOneMenu value=<span class="code-quote">&quot;#{user.locale}&quot;</span>
                  onchange=<span class="code-quote">&quot;<span class="code-keyword">this</span>.form.submit();&quot;</span>&gt;
     &lt;f:valueChangeListener
              type=<span class="code-quote">&quot;onlyfun.caterpillar.SomeListener&quot;</span>/&gt;
     &lt;f:selectItem itemValue=<span class="code-quote">&quot;zh_TW&quot;</span> itemLabel=<span class="code-quote">&quot;Chinese&quot;</span>/&gt;
     &lt;f:selectItem itemValue=<span class="code-quote">&quot;en&quot;</span> itemLabel=<span class="code-quote">&quot;English&quot;</span>/&gt;
 &lt;/h:selectOneMenu&gt;</pre>
							</div>
						</div>
						<p>  下面这个页面是对 立即事件
						中的范例程序作一个修改,将语言选项改以下拉式选单的选择方式呈现,这必须配合上面提供的UserBean类别来使用:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>index.jsp</b></div>
							<div class="codeContent">
								<pre class="code-java">&lt;%@ taglib uri=<span class="code-quote">&quot;http:<span class="code-comment">//java.sun.com/jsf/core&quot;</span> prefix=&quot;f&quot; %&gt;
</span> &lt;%@ taglib uri=<span class="code-quote">&quot;http:<span class="code-comment">//java.sun.com/jsf/html&quot;</span> prefix=&quot;h&quot; %&gt;
</span> &lt;%@page contentType=<span class="code-quote">&quot;text/html;charset=UTF8&quot;</span>%&gt;

 &lt;f:view locale=<span class="code-quote">&quot;#{user.locale}&quot;</span>&gt;
 &lt;f:loadBundle basename=<span class="code-quote">&quot;messages&quot;</span> <span class="code-keyword">var</span>=<span class="code-quote">&quot;msgs&quot;</span>/&gt;

 &lt;html&gt;
 &lt;head&gt;
 &lt;title&gt;&lt;h:outputText value=<span class="code-quote">&quot;#{msgs.titleText}&quot;</span>/&gt;&lt;/title&gt;
 &lt;/head&gt;
 &lt;body&gt;

    &lt;h:form&gt;
        &lt;h:selectOneMenu value=<span class="code-quote">&quot;#{user.locale}&quot;</span>
                  immediate=<span class="code-quote">&quot;<span class="code-keyword">true</span>&quot;</span>
                  onchange=<span class="code-quote">&quot;<span class="code-keyword">this</span>.form.submit();&quot;</span>
                  valueChangeListener=<span class="code-quote">&quot;#{user.changeLocale}&quot;</span>&gt;

            &lt;f:selectItem itemValue=<span class="code-quote">&quot;zh_TW&quot;</span>
                          itemLabel=<span class="code-quote">&quot;Chinese&quot;</span>/&gt;
            &lt;f:selectItem itemValue=<span class="code-quote">&quot;en&quot;</span>
                          itemLabel=<span class="code-quote">&quot;English&quot;</span>/&gt;
        &lt;/h:selectOneMenu&gt;

        &lt;h3&gt;&lt;h:outputText value=<span class="code-quote">&quot;#{msgs.hintText}&quot;</span>/&gt;&lt;/h3&gt;
        &lt;h:outputText value=<span class="code-quote">&quot;#{msgs.nameText}&quot;</span>/&gt;:
                &lt;h:inputText value=<span class="code-quote">&quot;#{user.name}&quot;</span>/&gt;&lt;p&gt;
        &lt;h:outputText value=<span class="code-quote">&quot;#{msgs.passText}&quot;</span>/&gt;:
                &lt;h:inputSecret value=<span class="code-quote">&quot;#{user.password}&quot;</span>/&gt;&lt;p&gt;
        &lt;h:commandButton value=<span class="code-quote">&quot;#{msgs.commandText}&quot;</span>
                        action=<span class="code-quote">&quot;#{user.verify}&quot;</span>/&gt;
    &lt;/h:form&gt;

 &lt;/body&gt;
 &lt;/html&gt;
	
 &lt;/f:view&gt;</pre>
							</div>
						</div>
					</div>
					</td>
				</tr>
			</table>
			</td>
		</tr>
	</table>
</div>
<p> </p>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -