JSP resourceBundle
Habe ich kein problem, das laden und die Benutzung properties
Datei aus JSP
Dateien die sich im root der website (mit ResourceBundle
Klasse) aber wenn ich versuche, laden Sie die gleiche properties
Datei von einem JSP
die sich in einem Verzeichnis, es schlägt fehl, und sagt, dass die Ressource kann nicht gefunden werden!
- Code der Seite, die sich in einem Verzeichnis befinden
<%@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>
zeigen Sie den code..
Eeeek, scriptlets. Die Verwendung von JSTL fmt. stackoverflow.com/questions/4276061/...
Eeeek, scriptlets. Die Verwendung von JSTL fmt. stackoverflow.com/questions/4276061/...
InformationsquelleAutor ehsun7b | 2011-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, weil Sie nicht respektieren die goldene Regel: setzen Sie nicht alles im default-package.
Ein resource-bundle geladen wird, als eine Klasse aus dem classpath. Es hat einen voll qualifizierten Namen, die verwendet werden müssen, um es zu laden. Und es ist nicht möglich, eine Klasse in den Standard-Paket von einer Klasse, die nicht im Standard-Paket.
Also, setzen Sie Ihre Ressourcen-bundle in einem geeigneten Paket (Beispiel :
com.persiangulfcup.foo.bar
), und laden Sie Sie wie folgt :ResourceBundle.getBundle("com.persiangulfcup.foo.bar.labels")
.Sagte, die Verwendung von scriptlets innerhalb JSPs ist eine schlechte Praxis. Sie sollten wirklich die JSTL, die eine
fmt
- Bibliothek ermöglicht die Verwendung resource-bundles, das format von Nachrichten, etc.Der Standard-Ort für log4j.Eigenschaften im default-package liegt, aber Sie sind einfach Eigenschaften, nicht rersource bündelt und sind somit nicht geladen werden durch den gleichen Mechanismus. Über den Ort der JSPs in der Wurzel, ich denke, es hängt von dem server verwendet, die wählt, wie die Generierung der entsprechenden Klassen.
ist es jetzt korrekt? ResourceBundle lbls = ResourceBundle.getBundle("com.persiangulfcup.config.Etiketten");
Wenn die Etiketten.Eigenschaften-Datei ist in der com.persiangulfcup.config Paket, dann ja, ist es richtig.
InformationsquelleAutor JB Nizet