Базовый портлет jsr 286 v liferay 6.0
Как получить данные из формы и отправить их в базу данных MySQL через JDBC?
Вот моя процедура:
основной класс:
public class Dati extends MVCPortlet {
public static Connection con() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception ex) {
System.out.println("Errore");
}
// APRI CONNESSIONE
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost/db_alex","root","25071984");
System.out.println("Connessione effettuata");
return conn;
} catch (SQLException ex) {
System.out.println("SQlException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
return null;
}
}
public void Invio (ActionRequest actionRequest, ActionResponse actionResponse)
throws PortletException, IOException {
String username = actionRequest.getParameter("username");
String password = actionRequest.getParameter("password");
Connection conn = null;
try {
Statement st = conn.createStatement();
st.executeUpdate("INSERT INTO contacts (username,password) values ('"+username+"','"+password+"')");
System.out.println("Inserimento avvenuto con successo");
} catch (Exception e) {
System.out.println("Inserimento non avvenuto");
}
}
}
View.jsp
<%
/**
* Copyright (c) 2000-2011 Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<portlet:actionURL name="Invio" var="Invio"/>
<form method="post" action="actionURL/>">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Invia!">
</form>
Я не знаю, где моя вина. Я читал, что Портлет временно недоступен и применяет это правило, но Liferay говорит, что я неправ.
Какую процедуру правильно хранить?
2 ответа
Решение
Вы определяете actionURL Invio как Java-объект в view.jsp, но ссылаетесь на него неправильно. вы должны ссылаться на него в теге <% =%>. на самом деле ваш тег формы должен выглядеть так:
<form method="post" action='<%=Invio%>'>
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Invia!">
Пожалуйста, проверьте значение атрибута действия тега формы.
Вы можете использовать во многих отношениях.
1. <form method="post" action="<portlet:actionURL/>">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Invia!">
</form>
2.
<form method="post" action="${Invio}">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Invia!">
</form>
3.
<form method="post" action="<%=Invio%>">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Invia!">
</form>
Третий мне не нравится.
Твой выбор....