я получил ошибку
Значение атрибута «method-signature», связанного с типом элемента «cc:attribute», не должно содержать символ «<». javax.faces.view.facelets.FaceletException: Ошибка синтаксического анализа /resources/custom.xhtml: Отслеживается ошибка [строка: 6]
custom.xhtml
<f:view xmlns = "http://www.w3.org/1999/xhtml"
xmlns:composite = "http://java.sun.com/jsf/composite"
xmlns:p = "http://primefaces.org/ui"
xmlns:f = "http://java.sun.com/jsf/core">
<composite:interface>
<composite:attribute method-signature = "List<String> function(String param)" name = "function"/>
</composite:interface>
<composite:implementation>
<p:ajax event = "change" update = "#{cc.attrs.function}"/>
</composite:implementation>
</f:view>
Ошибка возникает из-за <String>
, потому что в XML запрещено использовать угловые скобки внутри тегов. Так как же правильно объявить сигнатуру метода для составного атрибута? Это JSF 2 и Primefaces 7.0. Каков правильный синтаксис для MethodExpression в JSF? Поддерживается ли общий метод в EL? Должен ли я избегать угловых скобок, используя <
и >
, или, может быть, удалить общий тип, и EL будет правильно анализировать List function(String param)
?
@Melloware, так просто java.util.List function(java.lang.String param)
?
Вы должны посмотреть, JSF Composites интересны, например, вот одно из моих объявлений method-signature = "void actionListener()"
@Melloware, ты ошибаешься, это не та подпись, которая мне нужна
Я не предполагал, что это правильно, я давал вам пример подписи метода JSF CC.
Общие методы не поддерживаются EL. Кроме того, вы должны указать полные квалифицированные имена классов в качестве типов. Итак, нужная вам подпись
java.util.List function(java.lang.String param)
Я почти уверен, что дженерики не поддерживаются в EL.