Хобрук: Ваш путь к мастерству в программировании

Входные значения из jsp являются нулевыми в классе действий Struts. Как получить доступ к входным значениям регистрационной формы в классе Action

Регистрация.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</head>
<body>
    <center>
        <%@ taglib uri="/struts-tags" prefix="s"%>
        <s:form action="getRegistered.action" method="post" validate="true">
            <div>
                <table>
                    <s:textfield label="First Name" key="firstname" />
                    <s:textfield label="Last Name" key="lastname" />
                    <s:password label="Create your password" key="regpassword" />
                    <s:password label="Confirm your password" key="conpassword" />
                    <s:textfield label="Email" key="regemail1" />
                    <s:textfield label="Re-Type Email" key="conemail" />
                    <s:textfield label="Phone" key="phone" />   
                    <tr>
                    <td><s:submit value="Register" theme="simple"/></td>
                    <td><s:submit value="Cancel" theme="simple" onclick="document.forms[0].action='login.jsp';" /></td>
                    </tr>
                </table>
            </div>
        </s:form>
    </center>
</body>
</html>

Я передаю входные значения регистра в класс Action.

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>
    <package name="default" extends="struts-default">

        <action name="getLogin" class="login.action.LoginAction"
            method="login">
            <result name="success">/Success.jsp</result>
            <result name="input">/LoginError.jsp</result>
        </action>

        <action name="getRegistered" class="login.action.LoginAction"
            method="register">
            <interceptor-ref name="validation">
                <param name="excludeMethods">register</param>
            </interceptor-ref>
            <result name="success">/Success.jsp</result>
            <result name="input">/login.jsp</result>
        </action>

    </package>
</struts>

Это распорки xml

LoginAction.java:

package login.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
import login.service.LoginDao;
import login.service.RegisterDao;

@SuppressWarnings("serial")
public class LoginAction extends ActionSupport implements ServletRequestAware,
        ServletResponseAware {

    private String username;
    private String password;
    private HttpServletRequest httpServletRequest;
    private String firstname;
    private String lastname;
    private String regpassword;
    private String conpassword;
    private String regemail;
    private String conemail;
    private String phone;


    public String register(){

        RegisterDao rdao = new RegisterDao();
        System.out.println("firstname action::: "+firstname);
        rdao.registerdao(firstname,lastname,regpassword,conpassword,regemail,conemail,phone);
        return SUCCESS;
    }


    public String login() {
        httpServletRequest.getSession().setAttribute("key", username);
        httpServletRequest.getSession().setAttribute("key", password);
        LoginDao db = new LoginDao();
        Boolean validate = db.loginresult(username, password);
        if (validate == true) {
            return SUCCESS;

        } else {
            return INPUT;
        }
    }

    public HttpServletRequest getHttpServletRequest() {
        return httpServletRequest;
    }

    public void setHttpServletRequest(HttpServletRequest httpServletRequest) {
        this.httpServletRequest = httpServletRequest;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getRegpassword() {
        return regpassword;
    }

    public void setRegpassword(String regpassword) {
        this.regpassword = regpassword;
    }

    public String getConpassword() {
        return conpassword;
    }

    public void setConpassword(String conpassword) {
        this.conpassword = conpassword;
    }

    public String getRegemail() {
        return regemail;
    }

    public void setRegemail(String regemail) {
        this.regemail = regemail;
    }

    public String getConemail() {
        return conemail;
    }

    public void setConemail(String conemail) {
        this.conemail = conemail;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public void setServletRequest(HttpServletRequest request) {
        this.httpServletRequest = request;

    }


    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }



    @Override
    public void setServletResponse(HttpServletResponse arg0) {
        // TODO Auto-generated method stub

    }



}

Когда я отправляю регистрационную форму, входные значения, передаваемые в класс Action, равны нулю. Как я могу получить доступ к регистрационным значениям в классе действий в методе register().

Вышеупомянутая проблема решена.

Теперь я столкнулся с другой странной проблемой. Когда я отправляю форму action = getLogin.action, она всегда возвращает INPUT от перехватчика. Я не хочу исключать логин метода из валидатора.

Как я мог решить это?

Когда я изменяю struts xml, как показано ниже, он перенаправляется на успех jsp. Но я не хочу исключать метод входа в систему из проверки

       <action name="getLogin" class="login.action.LoginAction"
        method="login">
                            <interceptor-ref name="defaultStack">
            <param name="validation.excludeMethods">login</param>
        </interceptor-ref>
        <result name="success">/Success.jsp</result>
        <result name="input">/LoginError.jsp</result>
    </action>
17.06.2014

Ответы:


1

Вы используете только один Interceptor, вам нужно использовать весь стек:

Измените это:

<interceptor-ref name="validation">
    <param name="excludeMethods">register</param>
</interceptor-ref>

к этому

<interceptor-ref name="defaultStack">
    <param name="validation.excludeMethods">register</param>
</interceptor-ref>
17.06.2014
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..