JSP resourceBundle - PullRequest
       1

JSP resourceBundle

1 голос
/ 02 июля 2011

У меня нет проблем с загрузкой и использованием properties файла из JSP файлов, которые находятся в корне сайта (используя ResourceBundle class ), но когда я пытаюсь загрузить тот же properties файл из JSP, который находится в каталоге, не работает и сообщает, что ресурс не найден!

Код страницы, которая находится в каталоге

<%@page import="org.apache.log4j.Logger"%>
<%@page import="com.persiangulfcup.utility.LogUtils"%>
<%@page import="java.util.ResourceBundle"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
  Logger logger = LogUtils.getLogger("page/contact");
  ResourceBundle lbls = null;
  ResourceBundle msgs = null;
  try {
    lbls = ResourceBundle.getBundle("labels");
    msgs = ResourceBundle.getBundle("messages");
  } catch (Exception ex) {
    logger.fatal(ex);
  }
%>
<div class="form">
  <div style="text-align: left; font: normal bold 14px arial; cursor: pointer" onclick="contactBox.hide();">X</div>
  <div style="padding-bottom: 10px;font-size: 14px; text-align: center"><%=msgs.getString("contactHeader")%></div>
  <form id="frmContact" onsubmit="try {sendContact();} catch (e) {console.log(e)} return false;">
    <table class="form">
      <tr>
        <td class="caption"><%=lbls.getString("name")%>: </td>
        <td class="data">
          <input id="txtName" type="text" name="txtName"/>
        </td>
      </tr>
      <tr>
        <td class="caption"><%=lbls.getString("email")%>: </td>
        <td class="data">
          <input id="txtEmail" type="text" name="txtEmail"/>
        </td>
      </tr>
      <tr>
        <td class="caption"><%=lbls.getString("subject")%>: </td>
        <td class="data">
          <input id="txtSubject" type="text" name="txtSubject"/>
        </td>
      </tr>
      <tr>
        <td class="caption"><%=lbls.getString("message")%>: </td>
        <td class="data">
          <textarea id="txtMessage" name="txtMessage"></textarea>
        </td>
      </tr>
      <tr>
        <td class="button" colspan="2"><input type="submit" value="<%=lbls.getString("send")%>"/></td>        
      </tr>
      <tr>
        <td style="text-align: center" colspan="2" id="brdContact"></td>        
      </tr>
    </table>
  </form>
</div>

1 Ответ

6 голосов
/ 02 июля 2011

Это потому, что вы не соблюдали золотое правило: ничего не кладите в пакет по умолчанию. Пакет ресурсов загружается как класс из пути к классам. У него есть полное имя, которое должно быть использовано для его загрузки. И невозможно использовать класс в пакете по умолчанию из класса, не входящего в пакет по умолчанию.

Итак, поместите ваш пакет ресурсов в соответствующий пакет (пример: com.persiangulfcup.foo.bar) и загрузите их следующим образом: ResourceBundle.getBundle("com.persiangulfcup.foo.bar.labels").

Тем не менее, использование скриптлетов внутри JSP - плохая практика. Вы действительно должны использовать JSTL , который имеет библиотеку fmt, позволяющую использовать пакеты ресурсов, форматировать сообщения и т. Д.

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