Не удается запустить проверку формы - PullRequest
1 голос
/ 15 ноября 2011

Я изучал Struts 1.1 и пытался выполнить некоторую проверку формы с помощью своего кода.

Но ошибки, которые я описал в файле MessageResources.properties, не отображаются в JSP. Я перепробовал много вариантов, но не смог оторваться от земли. Я приложил часть кода.

MessageResources.properties

error.name.required = Please mention your name.
error.email.incorrect = You E-Mail ID is Incorrect.
error.phone.numericError = Phone number should consist only of digits.
error.phone.lengthIncorrect = Phone number should be only of 10 digits.

распорка-config.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
                           "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
 <form-beans>
     <form-bean name="detailsForm" type="com.example.form.DetailsForm"/>
 </form-beans>
 <action-mappings>
   <action input="/detailsEntry.jsp" name="detailsForm" path="/DetailsForm" type="com.example.action.DetailsAction" validate="true">
      <forward name="success" path="/displayDetails.jsp"/>
      <forward name="failure" path="/failure.jsp"/>
  </action>
  </action-mappings>
 </struts-config>

Форма класса:

package com.example.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class DetailsForm extends ActionForm {

private String name;
private String email;
private String phone;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getPhone() {
    return phone;
}

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

@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
    this.name = null;
    this.email = null;
    this.phone = null;
}

@Override
public ActionErrors validate(ActionMapping mapping,
        HttpServletRequest request) {
    ActionErrors actionErrors = new ActionErrors();

    if (this.name.equals(null) || this.name.length() == 0) {
        actionErrors.add("name", new ActionError("error.name.required"));
    }

    return actionErrors;
}

private boolean isNumeric(String phoneNumber) {
    try {
        Integer.parseInt(phoneNumber);
        return true;
    }
    catch (NumberFormatException numberFormatException) {
        return false;
    }
}
}

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Не забудьте добавить следующее в ваш jsp:

<html:errors />

Ваши сообщения об ошибках будут появляться там, где вы добавляете этот тег на jsp.

И если вы хотите, чтобы ваше сообщение об ошибке отображалось рядом с полем, к которому оно относится, используйте следующее:

<html:errors property="custName" />

где "custName" - это имя, которое вы дали сообщению об ошибке при создании его в форме, например:

ActionMessages errors = new ActionMessages();
errors.add("custName", new ActionMessage("custName.invalid"));
request.setAttribute(Globals.ERROR_KEY, errors);
3 голосов
/ 15 ноября 2011

Имя файла ресурса по умолчанию: ApplicationResources.properties.

Для использования других (или нескольких) файлов ресурсов требуется настройка в struts-config.xml:

<message-resource parameter="MessageResources" null="false" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...