- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在托管 bean 中的代码:-
<?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">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<center>
<h:form>
<h2> <u>Select Fruit(s). </u> </h2>
<!-- Value Change Listener is entirely superflous. You can make a full blown project without requiring the need to ever use this...This is
just for demo purpose..-->
<h:selectManyMenu onchange="document.forms[0].submit();" style="height: 200px;font-size: 1.5em;width: 200px;" >
<f:selectItems value="#{actionValueLisBean.fruitsList}" var="fruit" itemLabel="#{fruit}" itemValue="#{fruit}"/>
<f:valueChangeListener type="beans.ActionValueLisBean"/>
</h:selectManyMenu>
<h3> Your previous selection is :<h:outputText value="#{actionValueLisBean.prevSel}"/></h3>
<h3>Your current selection is :<h:outputText value="#{actionValueLisBean.currSel}"/></h3>
</h:form>
</center>
</h:body>
</html>
这是我的 bean :-
package beans;
import com.sun.jmx.remote.internal.ArrayQueue;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;
@ManagedBean
@RequestScoped
public class ActionValueLisBean implements ValueChangeListener {
private List<String> fruitsList;
private String currSel;
private String prevSel;
public String getCurrSel() {
return currSel;
}
public void setCurrSel(String currSel) {
this.currSel = currSel;
}
public String getPrevSel() {
return prevSel;
}
public void setPrevSel(String prevSel) {
this.prevSel = prevSel;
}
public List<String> getFruitsList() {
return fruitsList;
}
public void setFruitsList(List<String> fruitsList) {
this.fruitsList = fruitsList;
}
public ActionValueLisBean() {
fruitsList = new ArrayQueue<String>(5);
fruitsList.add("Apple");
fruitsList.add("Mango");
fruitsList.add("Banana");
fruitsList.add("Peach");
fruitsList.add("Plum");
}
@Override
public void processValueChange(ValueChangeEvent event) throws AbortProcessingException {
if(event.getOldValue() != null)
prevSel = event.getOldValue().toString();
if(event.getNewValue() != null)
currSel = "abc";
}
}
然后我将 prevSel 和 currSel 绑定(bind)到 h:outputText
。但是即使 processValueChange 被正确触发并且 System.out.println(event.getNewValue());
也工作正常,该值也没有得到。我也尝试设置不同的 bean 范围但没有用。我知道 ValueChangeListener 完全没用。我仍然想知道它是如何工作的。
提前致谢:)
最佳答案
我不确定您所说的“未获得值(value)”是什么意思。你应该再澄清一点。
至少,它的唯一目的是监听一个值的变化,这样你就可以根据变化做一些业务,比如记录或预加载一些与新值相关的东西。当初始值等于提交值时,则不会调用此方法。
这是一个代码片段,您可以自己尝试一下:
<h:form>
<p>Input value: <h:inputText value="#{bean.value}" valueChangeListener="#{bean.change}"/></p>
<p>Old value: <h:outputText value="#{bean.oldValue}" /></p>
<p>New value: <h:outputText value="#{bean.newValue}" /></p>
<p><h:commandButton value="submit" action="#{bean.submit}" /></p>
</h:form>
bean 类:
package com.example;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ValueChangeEvent;
@ManagedBean
@ViewScoped
public class Bean {
private String value;
private String oldValue;
private String newValue;
public void submit() {
System.out.println("Submit: " + value);
}
public void change(ValueChangeEvent event) {
oldValue = (String) event.getOldValue();
newValue = (String) event.getNewValue();
System.out.println("Change: " + oldValue + " to " + newValue);
}
public String getValue() {
return value;
}
public String getOldValue() {
return oldValue;
}
public String getNewValue() {
return newValue;
}
public void setValue(String value) {
this.value = value;
}
}
更新:根据您的更新:您正在使用 bean 的两个不同实例。您实际上是在显示托管 bean 的值,而不是 f:valueChangeListener
新创建的 bean 的值。
关于java - ValueChangeListener 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3595421/
我有以下代码:
这是我在托管 bean 中的代码:- Facelet Title Se
如何在数据表中使用 UIInput 组件正确实现 ValueChangeListener,然后我进入监听器方法获取行索引已更改、新值和旧值 变化,不一定产生POST到Server,Post
我正在使用 p:ajax监听器处理值更改事件(因为 valueChangeListener 在表单提交时启动): 处理方法: public void onNameChanged(final Ajax
我的 JSF 页面有两个下拉列表,我想根据第一个下拉列表中选择的值加载第二个列表。但是,仅在我第二次更改选择时才检测到“onchange”事件! 网页代码片段:
我对 ValueChangeListener 有疑问.我有这个代码: private void caricaSelectMainUser(){ Object[] a = socFilName.
我查看了其他类似的帖子,但没有任何帮助。这是我的代码: function submit1() { document.forms["form"].submit(); }
我正在学习如何在 JSF 中使用事件。出于某种原因,当我更改下拉菜单的值时,程序没有更改文本字段中的值。该页面加载并显示“德国”,但不会将文本字段更改为“DE”。有什么建议吗? 索引.xhtml:
我们有一个自定义的 JSF 组件,它以特定方式呈现一些按钮和一个选择框。这是由扩展 UIInput 的类完成的。 xhtml 模板中使用的自定义组件如下所示: 现在,由于我们从运行 JSF 2.0
我有一个简单的 ice:SelectOneMenu 和一个 ice:outputLabel 我想做的就是更改下拉列表中的值以设置我的文本标签告诉我我更改了值以及新值是什么(简单测试,一旦它起作用,我实
我正在尝试 vaadin 网站上提供的教程,当我在表的行上设置项目选择时,教程建议我应该将以下行添加到我的表类中。 addListener((Property.ValueChangeListener)
摘要: JSPX 页面中有一个input File功能,用户可以在其中选择要上传的文件。用户将按保存按钮将文件存储在数据库中。 工作流程: 当用户选择要上传的文件时,valueChangeListen
我正在使用 jDeveloper 12.1.3 和 MAF 2.0.0.0。我正在尝试在移动应用程序中build设置页面。所有项目均基于移动设备上的本地 SQLite 数据库。我已经设置了 POJO(
嗨,我正在与 oracle-adf 合作使用 Jdeveloper。我尝试使用 valuechangelister
假设我像这样定义一个 ComboBox: ComboBox myCombo = new ComboBox(); myCombo.addValueChangeListener(event -> {
我有一个自定义组件,想要向其中添加一个 ValueChangeListener。但我的注册方法有问题。 这是我的自定义组件。 public class CustomComp extends CssLa
它可以很好地加载stateList,但是当我更改状态的值时,它会调用backbean,但addressBO为空。我该如何修复它?还有其他办法吗? 提前致谢。 BackBean
在许多情况下,我需要在运行时在应用程序的许多地方使用某些 UIComponent 的值。但问题是我无法在 ValueChangeListener 之外访问组件的值。我尝试将此值存储在本地临时变量中,我
我调用 valueChangeListener在 上它在数据表中。并且该数据表再次位于另一个(外部)数据表内。在valueChangeListener方法我想要外部dataTable的实例对象。有没
我正在尝试为我的 Web 应用程序实现审计跟踪功能,该功能记录: lastModified(时间戳) modifiedBy(用户信息) userComment(值变化的原因) 对于我的每个输入字段(输
我是一名优秀的程序员,十分优秀!