Это будет немного странный вопрос, и я сделаю все возможное, чтобы объяснить его, но потерпите меня.
У меня есть страница .jsp с формой для ввода информации, страница SubmitAction.java для обработки действия struts и страница Request.java, которая на самом деле является просто контейнером для всех моих данных (она урезана для целей этого вопроса .На самом деле он содержит гораздо больше данных).
Моя основная проблема заключается в том, что я не могу заставить объект запроса узнать о каких-либо данных, которые были введены в NewForm.jsp. Например, при отладке внутри функцииstructInsertStatement() значение myTextBox всегда равно null.
Я опубликую то, что у меня есть, и, надеюсь, кто-то может сказать мне, что мне не хватает.
NewForm.jsp
<html>
<head>
<sx:head />
</head>
<body>
<s:form action="submitNew" method="post" namespace="/">
<s:textfield label="Text Box" name="myTextBox"
<s:submit label="Submit" name="submit_btn" align="center" />
</s:form>
</body>
</html>
Отправить Action.java
public class SubmitAction extends ActionSupport {
private Request request = new Request();
public void executeInsert() throws SQLException{
Connection conn = null;
PreparedStatement ps = null;
try {
ps = request.constructInsertStatement();
// execute the INSERT Statement
ps.executeUpdate();
} catch (SQLException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}finally {
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
}
}
Запрос.java
public class Request {
private String myTextBox;
public PreparedStatement constructInsertStatement() throws SQLException{
PreparedStatement ps = null;
Connection conn = null;
String URL = "myURL";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
conn = DriverManager.getConnection(URL, "defaultUser", "defaultPassword");
String sql = "INSERT INTO `myTable` (SomeText)";
sql += "VALUES";
sql+="(?)";
ps = conn.prepareStatement(sql);
try{
ps.setString(1, myTextBox);
} catch (SQLException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
return ps;
}
public String getmyTextBox() {
return myTextBox;
}
public void setmyTextBox(String myTextBox) {
this.myTextBox = myTextBox;
}
Действие Struts.xml
<struts>
<package name="default" extends="struts-default" namespace="/">
<action name="submitNew"
class="my.package.path.SubmitAction" method="executeInsert">
<result name="success">NewForm.jsp</result>
</action>
</package>
</struts>