You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by "G.L. Grobe" <ga...@grobe.org> on 2001/04/25 00:41:29 UTC

Struts MessageTag.java not reading property file keys

 How can I still get the following error if I've commented all my
<bean:message tags out from the below file? It still says key not found and
w/ these tags commented, it shouldnt' even try to pull a key, correct? I do
a println on the resource below to see that i'm getting the correct resource
file.

500 Internal Server Error
javax.servlet.jsp.JspException: Missing message for key main.title at
org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:242) at
/index.jsp._jspService(/index.jsp.java:159) (JSP page line 133) at
com.orionserver[Orion/1.4.8 (build 10374)].http.OrionHttpJspPage.service

Any ideas/help appreciated.

----------------- my index.jsp --------------------------

 <%@ page language="java" %>
<%@ taglib uri="WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="WEB-INF/struts-bean.tld" prefix="bean" %>

<html:html>
<head>

<title>
   <!-- bean:message key="main.title" /-->
</title>

<%@ include file="menubar.js" %>
<%@ include file="main.css" %>

</head>

<body bgcolor="white">
<html:errors/>

<%
   System.out.println("HERE ... " +
this.getClass().getClassLoader().getResource("cais.properties"));    // ...
this show's i'm accessing the right *.properties file
%>

<%@ include file="header.jsp" %>
<%@ include file="mainMenu.jsp" %>

<html:form action="view.do">

<table border="0" cellspacing="2" cellpadding="0" align="left">
   <tr>
      <td>
         <html:radio property="view" value="Master View">
         <!-- bean:message key="main.master" / -->&nbsp;
         </html:radio>
      </td>
      <td>
         <html:radio property="view" value="Details View">
         <!-- bean:message key="main.detail" / -->
         </html:radio>
      </td>
      <td>
         <center>
         <html:submit value="View"/>
         </center>
      </td>
   </tr>
</table>

</html:form>

<br> <br> <br> <br> <br>
<%@ include file="footer.jsp" %>

</body>
</html:html>

---------------------------------------------------------------
Also ... According to the above error and this snippit of code taken from
the 4-20 tar.gz source, the properties file that my web-app is looking for
*is being found* and all seems to be setup/configured correctly, otherwise
the error would be about messageTag.resources (not finding the property
file). So for some reason, the key can't be gotten from the file. I've also
included my properties (cais.properties) file below with this key included
in it. There are no hidden char's in this file that I've found.

The only thing else I think that can be wrong is the value of the args array
just before the Exception is thrown and I was wondering if anyone could tell
me what those might be.

The line with 'String message = resources.getMessage(locale, key, args);'
must be returning null and so this is giving me the above error, but I'm not
sure what's being stuffed into it or where it comes from.

Any help much appreciated.

----- MessageTag.java ------------------------------------------------

  public int doStartTag() throws JspException {

   // Acquire the resources object containing our messages
   MessageResources resources = (MessageResources)
       pageContext.getAttribute(bundle, PageContext.APPLICATION_SCOPE);
   if (resources == null)
       throw new JspException
      (messages.getMessage("messageTag.resources", bundle));

   // Calculate the Locale we will be using
   Locale locale = null;
   try {
       locale = (Locale)
      pageContext.getAttribute(localeKey, PageContext.SESSION_SCOPE);
   } catch (IllegalStateException e) { // Invalidated session
       locale = null;
   }
   if (locale == null)
       locale = defaultLocale;

   // Construct the optional arguments array we will be using
   Object args[] = new Object[5];
   args[0] = arg0;
   args[1] = arg1;
   args[2] = arg2;
   args[3] = arg3;
   args[4] = arg4;

   // Retrieve the message string we are looking for
   String message = resources.getMessage(locale, key, args);
   if (message == null)
       throw new JspException
      (messages.getMessage("messageTag.message", key));


------ ~WEB-INF/web.xml ------------------------
<servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      <init-param>
         <param-name>application</param-name>
         <param-value>cais</param-value>
      </init-param>
   ...

------ ~/index.jsp ------------------------
<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<html:html>
<head>
<title>
   <bean:message key="main.title" />
</title>

------ ~WEB-INF/classes/cais.properties ------------------------
# C.A.I.S. Resource Bundle
main.title=CAIS
main.master=Master View
main.detail=Detailed View