2010-01-07 5 views
0

Проблема, с которой я столкнулся сегодня, - это дело с HTML в включенном JSP с JSF. Итак, вот в чем проблема: я использую JSF 1.2 от IBM на RAD с помощью Websphere v6.1 У меня есть пользовательский компонент (из уровня компании) для использования вкладок. А для того, чтобы иметь более чистый код, я просто хочу, чтобы отделить JSF код каждой вкладки в отделенной JSP, таким образом, main.jsp:Смешать HTML и JSF в подвале JSF

<customTag:tabComponent> 
<jsp:include page="/jsp/workflow/tab1.jsp"></jsp:include> 
<div align="right"> 
    <customTag:switchToTab title="Next" tabValue="2"></customTag:switchToTab> 
</div> 
</customTag:tabComponent> 

И мой tab1.jsp:

<!-- Taglibs declared here --> 
<f:verbatim> 
<div id="myDivId"> 
    <fieldset> 
     <legend>myLegend</legend> 
     <h:outputText value="#{myBean.someContent}"></h:outputText> 
     <!-- HERE are a lot of JSF components, selectItems, inputText... --> 
    </fieldset> 
</div> 
</f:verbatim> 

Итак, компоненты JSF обрабатываются, но HTML, кажется, обрабатывается после и появляется после, за пределами HTML, созданного JSF. Что-то вроде

<table> 
    <!-- generated content --> 
</table> 
<div id="myDivId"> 
... 

хотя таблица должна находиться внутри div. Я попытался использовать теги <f:verbatim> разными способами, и единственным решением было окружить <div> и </div> стенографическими открывающими и закрывающими тегами, что является грязным и заставляет Websphere сходить с ума.

Google не нашел ничего подходящего, так что вы, ребята, уже столкнулись с той же проблемой? Можно ли найти чистое решение или мне нужно включить весь мой код в тот же JSP? Заранее спасибо.

ответ

2

Прежде всего, это можно признать устаревшим поведением JSF 1.0/1.1. f:verbatim действительно потребовалось взять шаблон текста в дерево компонентов JSF. Тем не менее, f:verbatim полностью избыточен, поскольку новый обработчик вида JSF 1.2 в 2006 году автоматически принимает любой текст шаблона внутри f:view в дерево компонентов. Таким образом, вы действительно с использованием JSF 1.2? Websphere 6.1 поставляется со встроенными библиотеками JSF 1.1 и обновлением до версии 1.2 не так просто, как просто размещение библиотек в /WEB-INF/lib.

Что касается вашей реальной проблемы, вам необходимо обернуть только шаблон текста с f:verbatim, не стоит компонентов JSF. Таким образом, должно работать следующее:

<f:verbatim> 
    <div id="myDivId"> 
     <fieldset> 
      <legend>myLegend</legend> 
</f:verbatim> 
<h:outputText value="#{myBean.someContent}"></h:outputText> 
<!-- HERE are a lot of JSF components, selectItems, inputText... --> 
<f:verbatim> 
     </fieldset> 
    </div> 
</f:verbatim> 
+0

Еще раз спасибо за ваше время. Может быть, это глупо, но как я могу узнать версию JSF? Я думал, что это 1,2, но вы должны быть правы, потому что компания отправила всю среду, и я ничего не изменил, так что я все-таки JSF 1.1. О вашем решении: я уже пробовал это, и сделал это снова после вашего ответа, и он работает в первый раз, когда я запускаю Websphere, но после «перепубликации» у меня получилось «republish failed» (не уверен в точном переводе, французский RAD окружающая среда), потому что

отсутствует. Поэтому я должен перезапускать WS каждый раз, чтобы заставить его работать. (BTW впечатляющий профиль!) – Baztoune

+0

Если вы использовали JSF 1.2, вы бы увидели это в журнале запуска (чего не было в версии 1.1). Кроме того, вы могли бы использовать классы только для 1,2, такие как 'ValueExpression' или только 1.2-методы, такие как' Application # valuExpressionGet() 'или теги только для 1,2, такие как' f: setPropertyActionListener' и 'h: panelGroup layout = "block" '. Что касается ошибки «republish failed» после публикации, я бы заподозрил грязный путь класса. Убедитесь, что в библиотеках не существует конфликтов версий во всем пути к классам (к сожалению, это связано с * множеством * путей в Websphere, я могу сказать по опыту). – BalusC

+0

Я не нашел ничего странного в пути к классам, но решение, которое я нашел, - «разрешить публикацию, когда приложение содержит ошибки» в RAD, поэтому оно не жалуется на «метки перехода» во время публикации. Результат все еще правильный, так что это нормально (я опубликую здесь позже, если найду что-то еще, для других). Благодарю. – Baztoune

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