Моя цель — передать строку с параметрами (Hello {0}
) из вспомогательного компонента в JavaScript. Мой текущий подход заключается в том, чтобы поместить строку в h:inputHidden
и позволить JS прочитать значение onLoad. К сожалению, f:param
внутри h:inputHidden
не работает, как в h:outputFormat
.
Какой подход вообще рекомендуется?
- Я мог бы объединить строку с параметрами в поддерживающем bean-компоненте, но imo это не должно касаться bean-компонентов.
- Я мог бы объединить их в JS, но опять же это похоже на изобретение велосипеда (используя
replace
функций...) - Я не вижу (хорошего) способа использовать
h:outputFormat
, но сделать его невидимым для пользователя. - Я не вижу способа заставить
h:inputHidden
принятьf:param
.
EDIT: Реальная используемая реализация — Apache MyFaces 1.1.4, поэтому я обновил заголовок до JSF 1.1.
Из-за ответа BalusC я вспомнил свой первый (и отброшенный) подход:
Прямое включение в исходный код JS.
<script> var text = '<h:outputFormat value="Hello {0}"><f:param value="World" /></h:outputFormat>'; </script>
К сожалению, в JSF 1.1 мне приходится использовать <f:verbatim>
, что делает код действительно уродливым (даже программа проверки синтаксиса eclipses не понимает его, хотя он работает):
<f:verbatim>
<script>
var text = '</f:verbatim>
<h:outputFormat value="Hello {0}"><f:param value="World" /></h:outputFormat>
<f:verbatim>';
</script>
</f:verbatim>
И дополнительный недостаток в том, что я не могу поместить это в <head>
, так как оно должно быть внутри <f:view>
.
<f:verbatim>
действительно уродлив. Я присуждаю награду BalusC за все время, которое он потратил на свои ответы и комментарии, которые мне очень помогли :) - person SebastianH   schedule 14.02.2014