2014-01-27 4 views
2

После перехода на JSF Mojarra 2.2.5 я получаю следующее исключение при использовании значения функции Omnifaces elNumber. Это происходит только в составном компоненте. Нормальный Facelet работает нормально.Использование функций Omnifaces EL в составном компоненте с Mojarra 2.2.5

javax.el.ELException: Функция 'от: FormatNumber' не найден

это мой составной компонент:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:jsf="http://xmlns.jcp.org/jsf" 
     xmlns:cc="http://xmlns.jcp.org/jsf/composite" 
     xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:of="http://omnifaces.org/functions"> 

    <cc:interface> 
     <cc:attribute name="cart" required="true" type="org.ead.eeb.order.ShoppingCart" /> 
     <cc:attribute name="allowCouponRemove" required="true" type="java.lang.Boolean" /> 
     <cc:attribute name="removeCouponBean" type="java.lang.Object" /> 
     <cc:attribute name="removeCouponAction" type="java.lang.String" /> 
     <cc:attribute name="removeCouponProperty" type="java.lang.String" /> 
    </cc:interface> 

    <cc:implementation> 
     <h4>Übersicht</h4> 
     <table class="table"> 
      <tbody> 
       <c:forEach items="#{cc.attrs.cart.items}" var="item"> 
        <tr> 
         <td><abbr title="#{item.description}">#{item.name}</abbr></td> 
         <td class="text-right">#{of:formatNumber(item.totalAmount, '#0.00')} €</td> 
        </tr> 
       </c:forEach> 
       <tr> 
        <td>Mehrwertsteuer (#{cc.attrs.cart.taxRatePercentage} %)</td> 
        <td class="text-right">#{of:formatNumber(cc.attrs.cart.totalTax, '#0.00')} €</td> 
       </tr> 
      </tbody> 
      <tfoot> 
       <tr class="active"> 
        <td><strong>Gesamtbetrag</strong></td> 
        <td class="text-right"><strong>#{of:formatNumber(cc.attrs.cart.totalOrderAmount, '#0.00')} €</strong></td> 
       </tr> 
      </tfoot> 
     </table> 
     ... 
    </cc:implementation> 

заранее спасибо за вашу помощь :)

Редактировать: проблема возникает, если я использую значение от cc.attrs.*. Если я использую значение непосредственно как атрибут, все работает хорошо. Есть идеи?

Edit2: Обойти можно следующим кодом

<c:set var="test" value="#{cc.attrs.value}" /> 
#{of:formatNumber(test, '#0.00')} 

но это довольно некрасиво. Я не могу найти свою ошибку.

+0

Напоминает мне о старой ошибке Моджарры. Что произойдет, если вы поместите 'xmlns: of =" http://omnifaces.org/functions "' inside ''? – BalusC

+0

Да, я нашел старые темы об этом. Но размещение объявления пространства имен в теге реализации не имеет значения. – J4y

+0

Странно. Позвольте мне попробовать это на 2.2.5 ... – BalusC

ответ

1

вопрос я создал был отмечен как Wont't Фикс, так как есть обходной путь:

Замена всех удобно инлайн-эль-вызовы типа #{foo} с <h:outputText value="#{foo}"/>.

https://java.net/jira/browse/JAVASERVERFACES-3469

Очень неудобно и громоздко. Многие регрессии из 2.2.4 -> 2.2.5.

Смежные вопросы