У меня есть следующее в моем файле struts.xml
<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>
У меня есть следующий в моем HTML-код
<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>
У меня есть метод execute, как показано ниже.
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;
}
Я переопределяю метод проверки, как показано ниже.
@Override
public void validate() {
HttpServletRequest request = this.getServletRequest();
if(request.getParameter(countryId) == 0){
addFieldError("countryId", "Please select country");
}
}
Теперь, когда я выполню свое действие, оно покажет мне форму со списком countryId, заполненным странами.
Теперь, когда я отправляю форму без выбора поля со списком, она должна показывать мне ошибку.
Но вместо сообщения об ошибке «Пожалуйста, выберите страну» выдается следующая ошибка.
Отчет о проблеме Struts
Struts обнаружил необработанное исключение:
Сообщения: тег 'select', поле 'list', name 'countryId': Запрошенный ключ списка '% {countryListCombo}' не может быть разрешен как коллекция / массив / карта / перечисление / Тип итератора. Пример: люди или люди. {Имя}
Файл: org / apache / jasper / servlet / JspServletWrapper.java
Номер строки: 522
Может кто-нибудь сказать мне, почему это так?
Похоже, что после того, как метод validate () дал результат = "input", он не вызывает метод execute () и вместо этого пытается напрямую отобразить страницу "/jsp/product_verification.jsp".
Пожалуйста, помогите мне решить проблему.
Спасибо.