Zum umleiten auf eine andere JSP, die nach immer Erfolg Ergebnis mit Ajax-Aufruf in Struts 2
Ich bin mit Struts 2 so registrieren Sie einen Benutzer.
Ich bin mit der Ajax-Aufruf zum registrieren eines Nutzers, nach dem aufstehen registrieren ich bin in der Lage, um die Erfolgsmeldung in der success Funktion bei Ajax-call. Aber seine nicht immer umgeleitet, um andere JSP basiert auf struts.xml
Ergebnis type=success
.
register.jsp
:
<s:form id="form">
<s:textfield name="email" id="email" label="Email" required="true" onkeyup="loadXMLDoc()" onblur="userNameCheck()"></s:textfield>
<s:textfield name="mobile" id="mobile" label="Mobile"></s:textfield>
<s:textfield name="username" id="username" readonly="true"
label="Username"></s:textfield>
<s:textfield name="first_name" id="first_name"
label="First Name"></s:textfield>
<s:textfield name="last_name" id="last_name"
label="Last Name"></s:textfield>
<s:password name="password" id="password" label="Password"></s:password>
<s:password name="uconfirm_password" id="confirm_password"
label="Confirm"></s:password>
<div class="button">
<input type="reset" name="cancel" id="cancel" value="Cancel">
<input type="submit" name="save" id="save" value="Save">
</div>
</s:form>
Ajax-Aufruf:
$.ajax({ //Ajax function to call the action
type : 'POST',
contentType : 'application/json',
url : 'user',
dataType : "html",
data : registerFormToJSON(),
success : function(html) {
alert("Successfully Registered");
},//End of success function in ajax call
error : function(err) {
console.log("Fail");
return true;
} //End of error function in ajax call
});
return false;
}
});
function registerFormToJSON() {
var data = JSON.stringify({
"userbean" : {
"username" : $("#username").val(),
"password" : $("#password").val(),
"firstname" : $("#first_name").val(),
"lastname" : $("#last_name").val(),
"confirmpassword" : $("#confirm_password").val(),
"email" : $("#email").val(),
"mobile" : $("#mobile").val(),
}
}); //End of getting form values and storing in json variable
alert(data);
return data;
}//End of function registerFormToJSON()
Action-Klasse Methode:
public class UserController implements Action {
private UserBeans userbean;
/**
* @return the userbean
*/
public UserBeans getUserbean() {
return userbean;
}
/**
* @param userbean
* the userbean to set
*/
public void setUserbean(UserBeans userbean) {
this.userbean = userbean;
}
@Override
public String execute() {
return SUCCESS;
}
public String register() {
UserService service = new UserServiceImpl();
userbean = service.addorUpDateUser(userbean);
//response.setContentType("json");
return ActionSupport.SUCCESS;
}
}
DAO-Klasse Methode:
public UserBeans addOrUpdateUser(UserBeans userBean) {
properties.load(inputStream);
con = conn.createConnection();
System.out.println("name is mine" + userBean.getUsername());
String encryptedPassword = PasswordUtil.encryptPassword(userBean.getPassword());
String query = properties.getProperty("users_query");
System.out.println(query);
System.out.println("connection:" + con);
preparedstatement = con.prepareStatement(query);
preparedstatement.setString(1, userBean.getUsername());
preparedstatement.setString(2, encryptedPassword);
preparedstatement.setString(3, userBean.getEmail());
preparedstatement.setString(4, userBean.getFirstname());
preparedstatement.setString(5, userBean.getLastname());
preparedstatement.setString(6, userBean.getMobile());
preparedstatement.setString(7, userBean.getConfirmpassword());
preparedstatement.executeUpdate(); //execute insert statement
logger.info("UserDaoImpl addOrUpDate Ends");
return userBean;
}
struts.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.action.extension" value="," />
<package name="default" extends="struts-default,json-default"
namespace="/">
<action name="users" class="com.sample.controller.UserController"
method="register">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
<result name="success" type="json">/login.jsp</result>
</action>
</package>
</struts>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste von allen, wenn Sie wollen, gehen Sie auf die andere Seite auf die Registrierung erfolgreich, warum sind Sie mit ajax?
Da die hauptsächliche Verwendung von ajax ist zum laden von Daten ohne refresh, aber hier sind Sie senden user zur nächsten Seite, bedeutet Ergebnis-Seite gehen, um neu zu laden; dann, warum die Verwendung von ajax für eine solche situation?.
So der bessere Weg ist die Verwendung von normalen Struts2 action call.
Und ein Vorschlag ist die Verwendung
('formId').serialize()
oder('formId').serializeArray()
Methode, um die Parameter form, anstatt die einzelnen parameter durchid
.Erstellen Sie eine
login
Aktion in derdefault
- Paket, das gibt einelogin.jsp
als Ergebnis.Erfolgs-handler verwenden Sie den code
Stimme ich der obigen Antwort von Roman C , Wenn Sie wollen, leiten Sie Ihre Seite, nicht ajax verwenden, rufen, einfach das Formular Absenden, in der Regel und es wird leiten Sie auf der jsp-Sie haben deklariert struts.xml.