返回值时,ValueChangeEvent不会触发

时间:2011-07-25 11:31:49

标签: java jsf valuechangelistener

在我的jsf页面中,我有一个inputtext字段和一个隐藏字段。我有一个编辑按钮,点击编辑按钮后会出现一个弹出屏幕,我选择一个值,所选值返回到我的隐藏字段。

我在我的隐藏字段中添加了一个valueChangeListener,并在我的bean中添加了以下代码。

public void processChange(ValueChangeEvent event){        
    try  {           
        logger.info("event new value "+event.getNewValue().toString());

    } catch (Exception ex)  {                        
    } 

然而,每次当我使用编辑弹出窗口更改值并将值返回到我的隐藏字段时,valueChangeListener不会触发我猜。

知道为什么valueChangeListener没有触发?我的页面范围是session并使用JSF 1.1。

这种方法背后的想法是重新查询并基于弹出窗口中的值,我想刷新JSF页面中的数据。

2 个答案:

答案 0 :(得分:1)

您不应该首先捕获最超类Exception,尤其是不记录任何内容。也许你的event.getNewValue()对象是null,然后你得到一个NullPointerException,你不会注意到这一点。

使用类似的东西:

public void processChange(ValueChangeEvent event){        
try  {           
    logger.info("event new value "+event.getNewValue().toString());

} catch (NullPointerException ex)  { 
     logger.error("object is null: "+ex.getMessage());              
} catch (Exception ex)  { 
     logger.error(ex);              
} 

http://download.oracle.com/javase/tutorial/essential/exceptions/index.html

答案 1 :(得分:1)

你必须提交表格。 在标记中添加onchange属性,该属性调用提交表单的javascript。 在提交表单之前,不会调用值更改事件。