自动服务与valueChangeListener一起使用

时间:2014-07-24 15:45:22

标签: spring jsf autowired valuechangelistener

我有一个来自JSF核心库的valuechangelistener,就像这个

           <h:column>
                <h:form>
                    <h:selectBooleanCheckbox onchange="submit()">
                        <f:valueChangeListener type="be.kdg.repaircafe.listeners.AssignBid"/>
                        <f:attribute name="bid" value="#{b}"/>
                    </h:selectBooleanCheckbox>
                </h:form>
            </h:column>

正在正确传递属性出价。

听众的代码:

@Component
@Scope("request")
public class AssignBid implements ValueChangeListener{

    @Autowired
    private RepairService repairService;

    //TODO: repairService null for some reason
    @Override
    public void processValueChange(ValueChangeEvent event) throws AbortProcessingException {
        Boolean assigned = (Boolean) event.getNewValue();
        Bid b = (Bid) ((UIInput) event.getSource()).getAttributes().get("bid");
        if(assigned){
            repairService.acceptBid(b);
        } else {
            repairService.clearBid(b);
        }
    }

}

问题是repairService总是抛出NullPointerException,由于某种原因它总是解析为null。在我项目的其他地方,我使用这项服务,我绝对没有问题。

我确信这是可能的,因为它昨天确实有效,今天我改变了一些代码,忘记了我改变了什么,然后它突然崩溃了。

1 个答案:

答案 0 :(得分:0)

将valuechangelistener类型更改为绑定

<f:valueChangeListener binding="#{assignBid}" />