Как создать конфигурацию на странице. Через c: установить? - PullRequest
0 голосов
/ 08 июня 2009

У меня есть веб-приложение, которое мне нужно для настройки частей со страницы JSF. Например, представьте, что мое приложение было разбито на несколько более мелких частей, каждая со структурой папок / файлов, как показано ниже:

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 18 февраля 2010

Предполагая, что вы можете использовать facelets, для проблемы c: set:

В вашем шаблоне:

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

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

В этом случае значение ui: param можно использовать как переменную для использования на страницах, использующих шаблон.

Страницы, использующие шаблон:

...
<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:

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

0 голосов
/ 08 июня 2009

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

0 голосов
/ 08 июня 2009

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

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

...