- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
它可以很好地加载stateList,但是当我更改状态的值时,它会调用backbean,但addressBO为空。我该如何修复它?还有其他办法吗?
提前致谢。
<h:selectOneMenu id="stateList" value="#{newUserController.address.stateID}">
<f:selectItems value="#{addressController.stateList}" />
<f:valueChangeListener type="controller.address.AddressController"/>
<f:ajax event="change" render="cidadeList"/>
</h:selectOneMenu>
<h:selectOneMenu id="cityList" value="#{newUserController.address.cityID}">
<f:selectItems value="#{addressController.cityList}" />
</h:selectOneMenu>
BackBean
package controller.address;
@ManagedBean
@RequestScoped
public class AddressController implements ValueChangeListener {
@EJB
private AddressBO addressBO;
@PostConstruct
public void firstThingToDo() {
stateList = enderecoBO.loadStateListSelectItem();
}
@Override
public void processValueChange(ValueChangeEvent event) throws AbortProcessingException {
String state = (String) event.getNewValue();
cityList = addressBO.loadCityList(state);
}
}
设置的另一个 backbean 是本例中未出现的地址和用户的值。
package controller.user;
@ManagedBean
@RequestScoped
public class NewUserController {
private Address address;
private User user;
@EJB
private NewUserBO newUserBO;
public void registerNewUser() {
newUserBO.register(user, address);
}
public Address getAddress() {
return this.address;
}
public void setAddress(Address address) {
this.address = address;
}
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}
}
最佳答案
第一个问题是您正在 <f:valueChangeListener>
中创建该类的全新实例。标签。这与 @ManagedBean
引用的实例不相同。并且托管 bean 相关的注释也不会被调用。您更愿意使用valueChangeListener="#{addressController.processValueChange}"
关于<h:selectOneMenu>
反而。但这并不能立即解决所有问题。变化很大,第二个列表的行为不符合预期。
第二个问题是在验证阶段调用值更改监听器方法。现在是更改/加载模型值的错误时机。您应该在调用操作阶段执行此操作。使用listener
<f:ajax>
的属性.
所以:
<h:selectOneMenu id="stateList" value="#{newUserController.address.stateID}">
<f:selectItems value="#{addressController.stateList}" />
<f:ajax listener="#{addressController.changeState}" render="cidadeList" />
</h:selectOneMenu>
与
@ManagedBean
@RequestScoped
public class AddressController {
@EJB
private AddressBO addressBO;
@PostConstruct
public void init() {
stateList = enderecoBO.loadStateListSelectItem();
}
public void changeState(AjaxBehaviorEvent event) {
String state = (String) ((UIInput) event.getComponent()).getValue();
cityList = addressBO.loadCityList(state);
}
// ...
}
关于java - :ValueChangeListener nullifying EJB injection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611644/
我有以下代码:
这是我在托管 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(值变化的原因) 对于我的每个输入字段(输
我是一名优秀的程序员,十分优秀!