2010-06-03 2 views
1

У меня есть очень простой JSF форму:Кто-нибудь видел это поведение h: commandLink?

<h:form id="simpleSearch"> 
    <h:inputText id="surname" value="#{myBean.surname}" required="true" /> 
    <h:commandLink>Search</h:commandLink> 
</h:form> 

Когда эта страница отображается, якорь, который генерируется как выглядит следующим образом (для краткости, я раздели сгенерированный OnClick код):

Search<a href="#" onclick="..."></a> 

Как видите, «Поиск» находится за пределами якоря, а тело якоря пуст. Это бесполезно для меня. Я не могу использовать это.

Есть ли какие-либо предложения/ссылки/чудеса, чтобы помочь мне исправить/понять, что здесь происходит?

Спасибо!

ответ

4

Вы смешиваете компоненты HTML и JSF. Обычно это не работает на JSP. Вы хотите поместить текст «Поиск» в h:outputText компонента:

<h:commandLink><h:outputText value="Search" /></h:commandLink> 
+0

Спасибо! Понятно, что мне нужно кое-что прочитать. :-) – Liggy

+1

Вы также можете использовать: Naganalf

+0

@Naganalf: работает ли это на JSF 1.0/1.1? Я вспоминаю некоторые проблемы с этим. – BalusC

3

В унаследованной JSF 1.0/1.1 любой текст шаблона оказанной перед тем компонент дерева JSF. Вам нужно обернуть текст шаблона в <f:verbatim>, чтобы взять его в дереве компонентов JSF. Но использование h:outputText более распространено, если только он не является простым HTML. Например.

<f:verbatim><h1>Title</h1></f:verbatim> 

Else вам нужно установить escape атрибут h:outputText к ложным избежать его спасся:

<h:outputText value="<h1>Title</h1>" escape="false" /> 

В JSF 1.2 и выше, с улучшенным обработчиком просмотра, вы можете просто использовать шаблон текста «обычный способ», он будет автоматически принят в дереве компонентов так, как вы ожидаете от кодирования.

Итак, эта проблема указывает на то, что вы «по-прежнему» используете устаревший JSF 1.0/1.1. Если вы можете, я предпочел бы предложить обновить, по крайней мере, до JSF 1.2. Вы можете заставить его работать на любом совместимом с Servlet 2.4 контейнере. JSF 1.2 и Servlet 2.4 были выпущены более 4 лет назад. Это довольно давно.

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

  • Нет связанных вопросов^_^