Как прочитать значение записи <Environment>, которая определена в моем META-INF / context.xml - PullRequest
1 голос
/ 08 октября 2019

У меня есть файл META-INF / context.xml, который выглядит примерно так:

 <?xml version='1.0' encoding='utf-8'?>
    <Context displayName="Game Application Dev">
     <Environment 
        name="myName" 
        value="HelloWorldApp" 
        type="java.lang.String" 
        description="This is my envName"/>
    </Context>

. В любом случае можно прочитать эту запись myName в моем .xhtml file без использования какого-либо компонента (который выполняет явный поиск jndi). Я знаю, что это можно сделать с помощью поиска jndi, но мое требование - достичь того же самого без использования bean-компонентов.

Редактировать 1: Мой целевой сервер: Apache Tomcat

Ответы [ 2 ]

3 голосов
/ 08 октября 2019

Хотя было бы все еще интересно узнать, почему вы не можете добавить bean-компонент в свой проект, есть один шанс получить доступ к String типизированным параметрам из Apache Tomcat context.xml - это метод getInitParam(String) из ExternalContext. :

Перепишите ваш <Environment .../> элемент в <Parameter .../>:

<Parameter
    name="myName" 
    value="HelloWorldApp" />

А в вашем xhtml напишите:

Это # {FaceContext.externalContext.getInitParameter ('myName')}!


Другая возможность - создать собственную EL-функцию . Но если вы не можете создавать bean-компоненты, это тоже не вариант.

2 голосов
/ 20 октября 2019

Вы можете использовать initParam['myName' ]. Смысл здесь в том, что initParam является неявной функцией, и соответствующий эквивалентный метод определен в ServletConfig getInitParameter (String paramName). Принятый ответ также будет работать как очарование, и использование initParam - это еще один способ выполнить работу. Я нашел интересную ссылку, которая очень четко объясняет основы.

Конфигурация сервлета

Небольшой фон: при загрузке сервлета также загружается вся информация, связанная с контекстом. И поскольку вы хотите получить доступ к одной такой информации, сначала убедитесь, что вы переписали свой элемент в:

<Parameter
    name="myName" 
    value="HelloWorldApp" />

, а затем получите доступ к нему двумя способами.

{facesContext.externalContext.getInitParameter('myName')}

Или

initParam['myName' ]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...