mehrere Message Resources in Struts ansprechen

Status
Nicht offen für weitere Antworten.
S

Sebastian123

Gast
Ich wüsste gerne, wie man aus einer ActionForm heraus auf mehrere verschiedene Message Resources unterscheidet.

Meine Klasse sieht so aus:

Code:
package MEINPROJEKT.ui.form;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Array;
import java.net.MalformedURLException;
import java.util.Properties;
import java.util.ResourceBundle;

import javax.imageio.stream.FileImageInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.taglib.bean.MessageTag;
import org.apache.struts.util.MessageResources;
import org.apache.struts.util.MessageResourcesFactory;

import de.tsystems.dcag.cm.ui.action.LoginAction;

import sun.misc.Resource;
import sun.reflect.ReflectionFactory.GetReflectionFactoryAction;


public class LoginForm extends AbstractActionForm {

	private static Log log = LogFactory.getLog(LoginForm.class);
	
	private String username;
	private String password;
	
	public String getPassword() {
	
		return password;
	}
	
	public void setPassword(String password) {
	
		this.password = password;
	}
	
	public String getUsername() {
	
		return username;
	}
	
	public void setUsername(String username) {
	
		this.username = username;
	}
	
	public void reset ( ActionMapping mapping, HttpServletRequest request) {
		username =  null;
		password = null;
		log.trace("reset");
	}

	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){
		ActionErrors errors = new ActionErrors();
		
		if (username == null || username.trim().equals("")){

			errors.add("username", new ActionMessage ("MEINPROJEKT.login.loginform.username_empty"));
		}
		if (password == null || password.trim().equals("")){
//			errors.add("password", new ActionError("MEINPROJEKT.login.loginform.password_empty"));
		}
		
		
		return errors;
	}
	

	
}

Nur so funktioniert's halt nicht, da ich 2 Message Resources angegeben habe und er nicht weiß, welche er nehmen soll. Ich habe keine Ahnung, wie ich das mitteilen kann. Bitte helft mir, ich hänge hier schon den ganzen Tag. In der Firma weiß es echt keiner. Dumme Sache.

Also meine struts config sieht übrigens dann so aus:

<message-resources key="MR" parameter="MessageResources" null="false"/>
<message-resources key="CM" parameter="CMResources" null="false"/>

Also wo gebe ich in der ActionForm die Keys "CM" oder "MR" an? In jsp's komme ich damit zurecht.

Edit sebastian: Code-Tags
 
S

SlaterB

Gast
na das ist ja was, wieso glaubst du dass das überhaupt funktionieren kann?
ich würde ja eher sagen, Struts scheißt alle messages auf einen Haufen, und Doppelte werden nur einmal gespeichert,
aber ist natürlich nur eine Ansicht, weiß auch nichts genaueres,

ganz simpel wäre, das CM in die PropertyDatei reinzuschreiben,
also einma
MR.login.loginform.username_empty,
MR.x.y
..

und in der anderen Datei

CM.login.loginform.username_empty,
CM.x.y
..

notfalls bleiben die Dateien ohne Prefix und dieser wird erst beim Deployment aus dem Dateinamen heraus automatisch eingefügt (mit selbstgebastelten Programm natürlich)

kommt das nicht in Frage?

------

edit: oha, deinen letzten Satz habe ich erst überlesen, wie funktioniert es denn in JSPs?
das wäre interessant zu wissen und vielleicht auch ein Ansatz für eine google-Suche

es gibt auch noch den Konstruktor

ActionMessage
public ActionMessage(java.lang.String key,
boolean resource)Construct an action message with the specified replacement values.

Parameters:
key - Message key for this message
resource - Indicates whether the key is a bundle key or literal value


http://struts.apache.org/1.2.7/api/org/apache/struts/action/ActionMessage.html
 
S

Sebastian123

Gast
Hallo SlaterB:

der Aufruf in der JSP ist:

<bean:message bundle="CM" key="MEINPROJEKT.irgendwas"/>

Hallo clemson:

da es sich um eine ActionForm und keine Action handelt und die Funktion in der ActionForm nicht unterstützt wird, hilft es mir leider nicht weiter :(

Vielen Dank euch beiden für die schnellen Antworten. Ich werde mir jetzt erst nochmal den Unterschied in der Mehrsprachigkeit ansehen und dann nochmal nachsehen ob jemand mehr weiß.
 
S

Sebastian123

Gast
Ich komme wie folgt an die Nachricht:

resources=((MessageResources) request.getAttribute("CM"));

String fieldName = resources.getMessage("MEINPROJEKT.login.loginform.username_empty");

ABER:
Wie füge ich die Nachricht zu der Errorliste hinzu?
 

daLenz

Aktives Mitglied
Hi,
versuchs mal so:
Code:
MessageResources messages = MessageResources.getMessageResources("MessageResources");
messages.getMessage("key");

greetz
 
S

SlaterB

Gast
is ja langsam gut ;)
es geht doch um ein ActionMessage/ ActionError-Konstrukt, da muss man den Property angeben, nicht die Nachricht selber,

da nützt alle Arbeit in der Action nix
(oder ich irre mich, kann auch sein ;) )
----

@Sebastian123: ich habe ja einen Konstruktor gepostet, der was mit bundle zu tun zu haben scheint,
hast du mit dem ein wenig probiert?, was ist wenn du
'CM.key...' als key angibst?


mit dem Stichwort bundle + ActionError ließe sich vielleicht auch was bei google finden,
z.B.
http://mail-archives.apache.org/mod...8099902.4351.255.camel@localhost.localdomain>
 

clemson

Bekanntes Mitglied
die getResources(HttpServletRequest,String) methode aus der struts Action ist folgendermaßen implementiert:

Code:
/**
* 

Return the specified message resources for the current module.</p>
*
* @param request The servlet request we are processing
* @param key The key specified in the
*  <code>&message-resources&</code> element for the
*  requested bundle
*
* @since Struts 1.1
*/
protected MessageResources getResources(
HttpServletRequest request,
String key) {

          // Identify the current module
          ServletContext context = getServlet().getServletContext();
          ModuleConfig moduleConfig =
          ModuleUtils.getInstance().getModuleConfig(request, context);

          // Return the requested message resources instance
          return (MessageResources) context.getAttribute(
                    key + moduleConfig.getPrefix());

}

innerhalb der ActionForm kommst du mit #getServlet() an das Servlet heran...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JSF - Mehrere Message-Bundles verwenden Allgemeines EE 17
R Mehrere Bilder gleichzeitig bzw. dynamisch eines Objektes speichern Allgemeines EE 2
F Mehrere Bilder aus MySQL DB via Servlet darstellen. Allgemeines EE 1
N JAAS login() mehrere Parameter an LoginModul übergeben Allgemeines EE 2
T Mehrere gleiche Jars im Classpath Allgemeines EE 7
A JMS: Mehrere Durable Subscriber dynamisch zur Laufzeit erzeugen - setClientID() Allgemeines EE 2
MQue ein Rechner - mehrere BrowserFenster Allgemeines EE 3
K mehrere Datenbanken mit JBoss 4.2 und EJB3 Allgemeines EE 3
A Mehrere User gleichzeigig, wie mach ich das? Allgemeines EE 14
A Annotation "ID: Primary Key über mehrere Spalten möglic Allgemeines EE 3
M Mehrere Webanwendungen über einen Webserver? Allgemeines EE 2
E bei struts inhalte über mehrere seite verteilen Allgemeines EE 6
G Mehrere Probleme mit Servlets/Java Allgemeines EE 15
clemson HTML Taglib - mehrere Submit-Buttons & Internationalisie Allgemeines EE 4
M MVC in J2EE: mehrere JSPs über ein Servlet kontrollieren Allgemeines EE 7
clemson mehrere Mail Attachments - JSP Struts Allgemeines EE 7
T Jsp die mehrere Servlets aufruft erzeugt Fehler Allgemeines EE 10
W Mehrere Applikationenen mit einer Anmeldung möglich? Allgemeines EE 11
B mehrere submit-buttons in einer jsp Allgemeines EE 11
OnDemand JSF Growl Message an User senden Allgemeines EE 13
J JSF: Zugriff auf message bundle Allgemeines EE 1
S <fmt:message> außerhalb von JSP Allgemeines EE 7
vogella Message Bundle Allgemeines EE 3
T GUI-Nachrichten mit Message Driven Beans? Allgemeines EE 6
B NullPointer ohne message body? Allgemeines EE 3
C Message Driven Bean soll keine Nachrichten empfangen Allgemeines EE 4
G Message Provider im JBoss wechseln Allgemeines EE 3
G message-resources Allgemeines EE 6
S Struts: Problem mit <bean:message> - Tag Allgemeines EE 1

Ähnliche Java Themen

Neue Themen


Oben