Альтернативное решение для

#xpath #xforms #orbeon

#xpath #xforms #orbeon

Вопрос:

У нас проблема с производительностью при использовании элементов управления for, которые получают число в формате $ dollars в качестве входных данных. Чтобы преодолеть эту проблему с производительностью, мы использовали вместо и реализовали следующую функциональность вычисления в привязке элемента управления.

 <xforms:bind id="Amount" 
             nodeset="instance('sample_form')/Amounts/Amount" 
             calculate="if (. !=0) 
                        then format-number(xs:double(.),'$#,##0.000') 
                        else ."/>
  

Но проблема с приведенным выше кодом заключается в том, что он преобразует значение элемента управления в строковый тип, что приводит к ошибке в элементах управления, значение которых зависит от этого. Пожалуйста, предоставьте мне решение вышеуказанной проблемы или предоставьте лучшую рекомендацию для решения этой ситуации.

Ответ №1:

Если вы хотите показать только форматированное значение (что, как я предполагаю, имеет место, поскольку вы собираетесь использовать calculate ), то вы могли бы поместить это выражение, которое у вас есть на calculate , внутри:

 <xforms:output value="..."/>
  

Если вам нужны и ввод, и вывод, и вы хотели бы, чтобы значение, хранящееся в вашем экземпляре, было просто неформатированным числом, то я не думаю, что есть простой способ обойти использование <fr:currency> , кроме как каким-то образом переопределить функциональность, предоставляемую <fr:currency> . Если вам нужны и ввод, и вывод, то я бы порекомендовал вам изучить это подробнее, чтобы найти, а затем решить источник проблемы с производительностью.