У меня есть следующая конструкция:
@Named
public class SpecificAction extends BasicAction {
public void calulateSomething(ValueChangeEvent event) {...}
}
}
@Named
public abstract class BasicAction {
public void calculateSomething(ValueChangeEvent event) {...}
}
, чем просмотры:
Файл: SpecificAction.xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite/cc"
xml:lang="de" lang="de">
<ui:composition template="/BasicAction.xhtml">
<ui:param name="basicAction" value="#{specificAction}" />
....
</ui:composition>
BasicAction.xhtml содержит мой составной компонент:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite/cc"
xmlns:gui="http://java.sun.com/jsf/composite/gui">
<gui:inplaceInput id="name" valueChangeListener="#{basicAction.calculateSomething}" value=#{bean.name} />
</html>
и составной компонент:
<composite:interface>
<composite:attribute name="value" />
<composite:editableValueHolder name="Value"/>
<composite:attribute name="valueChangeListener" targets="Value" />
</composite:interface>
<composite:implementation>
<h:inputText id="Value" value="#{cc.attrs.value}" onblur="handleBlur(this.id);" >
<composite:insertChildren />
</h:inputText>
</composite:implementation>
Если я запускаю свое творение, оно отлично работает, если в значении valueChangeListener указано значение «specificAction».Также он отлично работает в basicAction.xhml с выражением «basicAction», просто с составным компонентом, я получил забавное исключение:
[ExceptionHandlerFactory] Handling exception javax.faces.event.AbortProcessingException: javax.faces.event.AbortProcessingException: /BasicAction.xhtml @XX,XX valueChangeListener="#{basicAction.calculateSomething}": The class 'SpecificAction' does not have the property 'calculateSomething'.
at javax.faces.event.MethodExpressionValueChangeListener.processValueChange(MethodExpressionValueChangeListener.java:157) [:2.1.3-FCS]
at javax.faces.event.ValueChangeEvent.processListener(ValueChangeEvent.java:134) [:2.1.3-FCS]
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) [:2.1.3-FCS]
Любая идея, что это за хакер?Ошибка в Seam 3 или в JSF2 Framework или какая-то глупая ошибка на моей стороне?
Спасибо за ответы !!!