2009-06-08 2 views
0

У меня есть веб-приложение, которое мне нужно для настройки частей из страницы JSF. Так, например, представьте себе мое приложение было разделено на несколько более мелких частей, каждая с папки/файла структуры, как показано ниже:Как создать конфигурацию на странице. Через c: set?

/partname 
    /config 
     config.xhtml 
    /template 
     generaltemplate.xhtml 
    search.xhtml 
    results.xhtml 

Search.xhtml & results.xhtml как использовать файл шаблона, generaltemplate.xhtml. Этот общий шаблон должен включать содержимое config.xhtml. План состоит в том, чтобы поместить всю общую конфигурацию на эту страницу, чтобы приложения могли получить к ней доступ. Но у меня проблемы с этим.

Если я создаю переменные, используя < c: set > в файле config.xhtml, то они, похоже, доступны только на этой странице конфигурации. Раньше я бы просто изменил сферу действия на < c: set >, чтобы запросить и решить проблему. Но поскольку JSF работает по-другому, я знаю, что область в этом случае бесполезна.

Есть ли у кого-нибудь предложения по тому, как я смогу создать все свои настройки на этой странице, а затем получить доступ к нему во время моего приложения?

Это приложение написано с использованием Seam, поэтому использование чего-то из Seam может быть вариантом.

+0

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

ответ

0

Шов - это модель-вид-контроллер (MVC). Представление реализовано с использованием страниц JSF. Конфигурация является частью модели и не должна быть помещена на страницы.

Чтобы реализовать правильное расслоение, я предлагаю вам установить вашу конфигурацию в какой-либо глобально доступный bean-компонент (созданный Seam, вероятно, заполненный из файла .properties), который вы ссылаетесь на своих страницах JSF.

0

Я не знаю, сколько рефакторинга будет задействовано, но вы могли бы создать компонент конфигурации, который был бы соответствующим образом скопирован, а затем использовать теги c: set для настройки вашего компонента конфигурации. Затем, позже на вашей странице, вы можете использовать компонент конфигурации вместо прямого доступа к переменным.

1

Предполагая, что вы можете использовать Facelets, для C: установить вопрос:

В шаблоне:

... 
<html ... 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
... 
<body> 
    <ui:param name="testParam" value="Test" /> 

    <ui:insert name="test"> 
    </ui:insert> 
... 

В этом случае значение Ui: пары может быть использован в качестве переменного быть используется на страницах с использованием шаблона.

Страницы с использованием шаблона:

... 
<html ... 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
... 
<body> 
<ui:composition template="/WEB-INF/templates/template.xhtml"> 
    <ui:define name="test"> 
<h:outputText value="#{testParam}" /> 
... 

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

Edit:

Я извиняюсь за не перепроверки раньше, так как я был очень занят и использовал первый ответ, который пришел на ум, однако, я проверил с помощью переменного тока: установить вместо щ: пары будут работать одинаково, используя предыдущую определенную настройку. Итак, в шаблоне вы могли бы вместо этого. Это означало бы, что вам также нужно будет включить xmlns: c = "http://java.sun.com/jstl/core", который, я уверен, у вас уже есть.