Frage

Ich habe in meiner Datei struts.xml folgt

<action name="ProductVerification" class="com.frontend.ProductVerification">
    <result name="success">/jsp/product_verification.jsp</result>
    <result name="input">/jsp/product_verification.jsp</result>
    <result name="error">/jsp/product_verification.jsp</result>
</action>

Ich habe in meinem HTML -Code gefolgt

<s:form name="frmVerification" id="frmVerification" onsubmit="Javascript: return checkFrmVerification(this);"  >

<s:select name="countryId" id="cmbcountryid"  headerKey="0"  headerValue="%{getText('label.Please_Select')}" list="%{countryListCombo}" listKey="countryId" listValue="country" value="countryId" cssClass="style2" onchange="Javascript: GetCities();" required="true" />

<s:submit name="submit" src="images/submit_btn.jpg" type="image" value="submit" />

</form>

Ich habe die Methode wie unten ausgeführt.

public String execute() throws Exception {

    Session session = this.getHibernateSession();

    Transaction tx = session.beginTransaction();

    //Following will set combo box containing country list
    this.setCountryListCombo();

    tx.commit();

    return SUCCESS;
}

Ich überschreibe die Validierungsmethode wie unten.

@Override
public void validate() {
 HttpServletRequest request = this.getServletRequest();

     if(request.getParameter(countryId) == 0){
          addFieldError("countryId", "Please select country");
     }

}

Wenn ich jetzt meine Aktion ausführe, wird mir das Formular mit CountryId -Kombinationsbox mit Ländern gezeigt.

Wenn ich nun ein Formular einreiche, ohne das Kombinationsfeld auszuwählen, sollte es mir Fehler zeigen.

Anstatt Fehler "Bitte aus dem Land auszuwählen" anzeigen, gibt es mir den folgenden Fehler.

Struts Problembericht

Struts hat eine ungehandelte Ausnahme festgestellt:

Mitteilungen: Tag 'Select', Feld 'Liste', Name 'CountryId': Der angeforderte Listenschlüssel '%{CountryListcombo}' konnte nicht als Sammlung/Array/MAP/Enumeration/Iterator -Typ gelöst werden. Beispiel: Personen oder Personen. {Name}

Datei: org/apache/jasper/servlet/jspServletwrapper.java

Zeilennummer: 522

Kann mir jemand sagen, warum es so ist?

Es scheint, dass nach Validate () -Methode result = "Eingabe" keine execute () -Methode aufgerufen wird und stattdessen versucht, "/jsp/product_verification.jsp" direkt anzuzeigen.

Bitte helfen Sie mir, das Problem zu lösen.

Vielen Dank.

War es hilfreich?

Lösung

Ihre Annahme ist korrekt, wenn ein Feldfehler hinzugefügt wird, wird standardmäßig das Ergebnis "Eingabe" zurückgegeben, wodurch das Eingabeergebnis zurückgeführt wird. Ich würde empfehlen, vorbereitbare Vorbereitungen zu implementieren, sodass Sie den Combobox immer vor dem Seitenwechsel bevölkern können.

Andere Tipps

Sie müssen Ihren Kombinationsboxcode in Methode hinzufügen, genau wie unten:

public String execute() throws Exception {

//add this code also as per your comobobx code
countryList = new ArrayList<Country>();
        countryList.add(new Country(1, "India"));
        countryList.add(new Country(1, "Shri Lanka"));
        countryList.add(new Country(1, "USA"));
        countryList.add(new Country(1, "Pakistan"));
        countryList.add(new Country(1, "NewsLnad"));

//add this code also as per your comobobx code

    Session session = this.getHibernateSession();

    Transaction tx = session.beginTransaction();

    //Following will set combo box containing country list
    this.setCountryListCombo();

    tx.commit();

    return SUCCESS;
}

Fügen Sie auch das folgende Tag auf Ihrer JSP -Seite hinzu

<s:actionerror />

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top