我有一个来自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。在我项目的其他地方,我使用这项服务,我绝对没有问题。
我确信这是可能的,因为它昨天确实有效,今天我改变了一些代码,忘记了我改变了什么,然后它突然崩溃了。
答案 0 :(得分:0)
将valuechangelistener类型更改为绑定
<f:valueChangeListener binding="#{assignBid}" />