hallo zusammen,
zu meiner problematik konnte ich hier im forum noch nichts finden. sollte es dennoch einen thread mit lösungsvorschlägen bereits geben, sag ich schon mal vorab sorry!
also folgendes: ich habe auf einer jsp-seite ein dropdown-menü mit einer auswahllliste. entsprechend des gewählten eintrages wird aus einer datenbank mir ein vector mit den passenden einträgen zurückgeliefert. das funktioniert alles ganz wunderbar. nun soll es so sein, nachdem der benutzer auf dieser jsp-seite auf submit klickt, eine weiterleitung zu einer neuen jsp-seite erfolgt, auf der eine liste mit checkboxen sind und entsprechend des gelieferten vectors die jeweiligen checkboxen aktiviert sind.
ich habe jetzt verschiedene tutorials versucht durchzuexerzieren, aber irgendwie komme ich absolut nicht weiter. hier vielleicht einfach mal mein ansatz: was ich gelesen habe, ist, dass man ein String-array verwendet, in dem die zu aktivierenden einträge enthalten sind. d. h. ich müsste die einträge aus meinem vector in dieses String[] packen.
hier die "input-jsp": themaForm.jsp
und hier die "output-jsp" mit den checkboxen: layerForm.jsp
eintrag in der struts-config.xml:
beim ausführen erhalte ich diese meldung:
irgendwie habe ich keinen plan, was ich falsch mache. ich hoffe, das war nicht zu viel, was ich gepostet habe.
für jeden hinweis/tipp/hilfe bin ich sehr dankbar!
gruß pusteblume
zu meiner problematik konnte ich hier im forum noch nichts finden. sollte es dennoch einen thread mit lösungsvorschlägen bereits geben, sag ich schon mal vorab sorry!
also folgendes: ich habe auf einer jsp-seite ein dropdown-menü mit einer auswahllliste. entsprechend des gewählten eintrages wird aus einer datenbank mir ein vector mit den passenden einträgen zurückgeliefert. das funktioniert alles ganz wunderbar. nun soll es so sein, nachdem der benutzer auf dieser jsp-seite auf submit klickt, eine weiterleitung zu einer neuen jsp-seite erfolgt, auf der eine liste mit checkboxen sind und entsprechend des gelieferten vectors die jeweiligen checkboxen aktiviert sind.
ich habe jetzt verschiedene tutorials versucht durchzuexerzieren, aber irgendwie komme ich absolut nicht weiter. hier vielleicht einfach mal mein ansatz: was ich gelesen habe, ist, dass man ein String-array verwendet, in dem die zu aktivierenden einträge enthalten sind. d. h. ich müsste die einträge aus meinem vector in dieses String[] packen.
Code:
/*form-bean*/
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class ThemaForm extends ActionForm {
// form-fields
private String topic_name;
private int topic_id;
private String [] allLayers = {};
//set and get methods
public int getTopic_id() {
return topic_id;
}
public void setTopic_id(int topic_id) {
this.topic_id = topic_id;
}
public String getTopic_name() {
return topic_name;
}
public void setTopic_name(String topic_name) {
this.topic_name = topic_name;
}
public String[] getAllLayers() {
return allLayers;
}
public void setAllLayers(Vector input) {
input.copyInto(allLayers);
}
//reset the variables
public void reset(ActionMapping mapping, HttpServletRequest request) {
topic_name = null;
topic_id = 0;
}
//validate if the variables are filled
public ActionErrors validate(HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (topic_name == null || topic_id == 0) {
errors.add("thema", new ActionMessage(
"thema.problem"));
}
return errors;
}
}
Code:
/*action-class*/
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import java.io.BufferedReader;
import java.io.*;
import java.sql.Connection;
import java.sql.Statement;
import de.dlr.ng.nki.layermanagement.forms.*;
i
public class ThemaAction extends Action {
static Connection con; // db-verbindung-variable
static Statement st; // sql-variable
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String topic = request.getParameter("topic_id");
int tid = Integer.parseInt(request.getParameter("topic_id"));
TopicChoice.topicChoice(tid); // calls the method topicChoice which
// returns the layer-ids for the
// specified topic-id from the database
String [] selectedLayers = ((LayerForm)form).getSelectedLayers();
HttpSession session = request.getSession();
session.setAttribute("layers", selectedLayers);
return mapping.findForward("layerform"); // weiterleitung zuml ayer-formular
}
public int compareTo(File arg0) {
// TODO Auto-generated method stub
return 0;
}
}
hier die "input-jsp": themaForm.jsp
Code:
<%@ page language="java"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Thema-Auswahl</title>
</head>
<body>
<h1>Thema Auswahl</h1>
<html:errors></html:errors>
<html:form action="/themaForm">
<bean:message key="thema.name" />
<html:select property="topic_id">
<html:option value="1">grassland</html:option>
<html:option value="2">water</html:option>
<html:option value="3">streets</html:option>
<html:option value="4">sealed_areas</html:option>
<html:option value="5">trees</html:option>
<html:option value="6">vegetation</html:option>
</html:select>
<logic:iterate name="ThemaForm" property="allLayers" id="allLayer" >
<html:multibox property="selectedLayers">
<bean:write name="allLayer"/>
</html:multibox>
<bean:write name="allLayer"/>
</logic:iterate>
<html:submit />
<html:cancel />
<html:reset />
</html:form>
</body>
</html>
und hier die "output-jsp" mit den checkboxen: layerForm.jsp
Code:
<%@ page language="java"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Layer-Auswahl</title>
</head>
<body>
<h1>Layer Auswahl</h1>
<html:errors />
<<logic:iterate id="allLayer" property="allLayers" name="testForm">
<bean:write name="allLayer"/>
</logic:iterate>
<hr size=5 color="black"/>
</body>
</html:html>
eintrag in der struts-config.xml:
Code:
...
<form-beans>
<form-bean name="ThemaForm" type="de.dlr.ng.nki.layermanagement.forms.ThemaForm" />
<form-bean name="LayerForm" type="de.dlr.ng.nki.layermanagement.forms.LayerForm" />
</form-beans>
...
<action
path="/themaForm"
type="ThemaAction"
name="ThemaForm"
validate="true"
input="/themaForm.jsp">
<forward name="layerform" path="/layerForm.jsp" />
</action>
<action
path="/layerForm"
type="LayerAction"
name="LayerForm"
validate="true"
input="/layerForm.jsp">
<forward name="success" path="/regSuccess.jsp" />
</action>
...
beim ausführen erhalte ich diese meldung:
exception
javax.servlet.ServletException: java.lang.ClassCastException: de.dlr.ng.nki.layermanagement.forms.ThemaForm
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.ClassCastException: de.dlr.ng.nki.layermanagement.forms.ThemaForm
de.dlr.ng.nki.layermanagement.actions.ThemaAction.execute(ThemaAction.java:54)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
irgendwie habe ich keinen plan, was ich falsch mache. ich hoffe, das war nicht zu viel, was ich gepostet habe.
für jeden hinweis/tipp/hilfe bin ich sehr dankbar!
gruß pusteblume