• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Struts Validation Empty alert Box

 
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hello,

I am using Struts Validation. The validation is working properly. But I get an empty Alert box with no message. But i see that the focus is set to the field left empty.
Can anyone please help me with this?
 
Author
Posts: 12617
IntelliJ IDE Ruby
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Not without any code or configs.
 
leela addagulla
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hello David,

Please find the Files Content below:

StrutsConfig.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources/>

<form-beans>
<form-bean name="LoginForm" type="org.suiteaccess.form.LoginForm"/>
<form-bean name="MCStatusReportForm" type="org.apache.struts.action.DynaActionForm"/>
<form-bean name="memberCompanySelectForm" type="org.suiteaccess.form.MemberCompanySelectForm"/>
<form-bean name="MemberCompanyForm" type="org.suiteaccess.form.MemberCompanyForm"/>
</form-beans>

<global-exceptions/>
<global-forwards/>
<action-mappings>
<action
path="/login"
type="org.suiteaccess.action.LoginAction"
name="LoginForm"
scope="request"
validate="true"
input="/login.jsp">
<forward name="success" path="/welcome.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>

<action
path="/logout"
type="org.suiteaccess.action.LogoutAction"
name="LoginForm"
scope="request">
<forward name="login" path="/login.jsp"/>
</action>

<action
path="/MemberCompanyAdd"
type="org.suiteaccess.action.MemberCompanyDetailAction"
name="MemberCompanyForm"
parameter="dispatch"
scope="request"
validate="true">
<forward name="form" path="/MemberCompanyDetail.jsp"/>
<forward name="added" path="/MemberCompanyDetail.jsp"/>
<forward name="editmode" path="/MemberCompanyDetail.jsp"/>
<forward name="delete" path="/MemberCompany.do"/>
</action>

<action
path="/MCStatusReport"
type="org.suiteaccess.action.MCStatusReportAction"
name="MCStatusReportForm"
scope="request"
validate="true">
<forward name="report" path="/MCStatusReport.jsp"/>
</action>

<action
path="/MemberCompany"
type="org.suiteaccess.action.MemberCompanyAction"
name="memberCompanySelectForm"
scope="session">
<forward name="select" path="/MemberCompanySelection.jsp"/>
</action>
</action-mappings>

<message-resources parameter="MessageResources" />

<!-- Validator plugin -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

</struts-config>

The JSP: MemberCompanyDetail.jsp

<%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="my" %>

<html:html locale="true">
<head>
<title>LOGIN SUITE ACCESS</title>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<script>

function floorSelect(checkBox){
var controlName=checkBox.name+"Floors";
if(checkBox.checked)
document.getElementById(controlName).disabled=false;
else{
document.getElementById(controlName).disabled=true;
document.getElementById(controlName).value='';
}
}

function validate(){
document.forms[0].dispatch.value='save'
var value= document.getElementById('accountManager').value;
if(value==null)
return false;
else
return true;
}
</script>
<html:javascript formName="MemberCompanyForm"/>
</head>

<body bgcolor="white">

<logic:empty name="user">
<jsp:forward page="/login.jsp"/>
</logic:empty>

<%@ include file="header.html" %>
<html:form action="/MemberCompanyAdd" method="post" enctype="multipart/form-data" onsubmit="return validateMemberCompanyForm(this)">

<table>
<%
String status="";
String industry="";
String contactType="";
String user="";
if(request.getAttribute("selectedStatus")!=null)
status=request.getAttribute("selectedStatus").toString();
if(request.getAttribute("selectedIndustry")!=null)
industry=request.getAttribute("selectedIndustry").toString();
if(request.getAttribute("selectedUser")!=null)
user=request.getAttribute("selectedUser").toString();
%>
<tr><td >* indicates Required Fields</td></tr>
<tr><td >*Company Name:</td><td><html:text styleId="search-text" property="companyName"/></td></tr>
<tr><td >*Industry:</td>
<td>
<html:select property="industry" value="<%=industry %>">
<html:options collection="industries" property="industryId" labelProperty="industryName" />
</html:select>
</td></tr>
<tr><td >*Company Status:</td>
<td>
<html:select property="companyStatus" value="<%=status %>">
<html:options collection="companyStatuses" property="id" labelProperty="description" />
</html:select>
</td>
</tr>

<tr><td>
<table>
<tr><td class="title">Contact Details</td></tr>
<tr><td >Contact Type:</td>
<td>
<html:select property="contactType">
<html:options collection="contactTypes" property="contactTypeId" labelProperty="description" />
</html:select>
</td>
</tr>
<tr><td >Contact First Name:</td><td><html:text styleId="search-text" property="contactFirstName"/></td></tr>
<tr><td >Contact Last Name:</td><td><html:text styleId="search-text" property="contactLastName"/></td></tr>
<tr><td >Salutation</td><td><html:text styleId="search-text" property="salutation"/></td></tr>
<tr><td >WorkPhone</td><td><html:text styleId="search-text" property="workPhone"/></td></tr>
<tr><td >AlternatePhone</td><td><html:text styleId="search-text" property="alternatePhone"/></td></tr>
<tr><td >CellPhone</td><td><html:text styleId="search-text" property="cellPhone"/></td></tr>
<tr><td >FaxNumber</td><td><html:text styleId="search-text" property="faxNumber"/></td></tr>
<tr><td >ContactEmail</td><td><html:text styleId="search-text" property="contactEmail"/></td></tr>
</table>
</td></tr>


<tr>
<td>
<table>
<tr><td class="title">Address Details</td></tr>
<tr><td >HeadQuarters:</td><td><html:radio property="addressType" value="addressOne"/></td></tr>
<tr><td >Address1:</td><td><html:text styleId="search-text" property="addressOneOne"/></td></tr>
<tr><td >Address2:</td><td><html:text styleId="search-text" property="addressOneTwo"/></td></tr>
<tr><td >Address3:</td><td><html:text styleId="search-text" property="addressOneThree"/></td></tr>
<tr><td >City</td><td><html:text styleId="search-text" property="cityOne"/></td></tr>
<tr><td >State</td><td><html:text styleId="search-text" property="stateOne"/></td></tr>
<tr><td >ZipCode</td><td><html:text styleId="search-text" property="zipOne"/></td></tr>
<tr><td >Country</td><td><html:text styleId="search-text" property="countryOne"/></td></tr>
<tr><td >Province</td><td><html:text styleId="search-text" property="provinceOne"/></td></tr>
</table>
</td>
<td>
<table>
<tr><td>
</td></tr>
<tr><td >HeadQuarters:</td><td><html:radio property="addressType" value="addressTwo"/></td></tr>
<tr><td >Address1:</td><td><html:text styleId="search-text" property="addressTwoOne"/></td></tr>
<tr><td >Address2:</td><td><html:text styleId="search-text" property="addressTwoTwo"/></td></tr>
<tr><td >Address3:</td><td><html:text styleId="search-text" property="addressTwoThree"/></td></tr>
<tr><td >City</td><td><html:text styleId="search-text" property="cityTwo"/></td></tr>
<tr><td >State</td><td><html:text styleId="search-text" property="stateTwo"/></td></tr>
<tr><td >ZipCode</td><td><html:text styleId="search-text" property="zipTwo"/></td></tr>
<tr><td >Country</td><td><html:text styleId="search-text" property="countryTwo"/></td></tr>
<tr><td >Province</td><td><html:text styleId="search-text" property="provinceTwo"/></td></tr>
</table>
</td>
</tr>

<tr><td >*StartDate:</td><td><html:text styleId="search-text" property="startDate"/></td></tr>
<tr><td >Total Employees in NY Office:</td><td><html:text styleId="search-text" property="employeeCount"/></td></tr>
<tr><td >Total Male Employees:</td><td><html:text styleId="search-text" property="maleEmployeeCount"/></td></tr>
<tr><td >Total Female Employees:</td><td><html:text styleId="search-text" property="femaleEmployeeCount"/></td></tr>
<tr><td >Average Employee Age:</td><td><html:text styleId="search-text" property="avgAge"/></td></tr>
<tr><td >How many Floors do you occupy in your building:</td><td><html:text styleId="search-text" property="floorCount"/></td></tr>
<tr><td >How many Floors have Kitchens/pantries</td><td><html:text styleId="search-text" property="kitchenFloorCount"/></td></tr>
<tr><td >Which Floors</td><td><html:text styleId="search-text" property="kitchenFloors"/></td></tr>
<tr><td ><html:checkbox property="executiveKitchen" onchange="floorSelect(this)">Is there a separate Kitchen/Pantry for the Executive Team?</html:checkbox></td></tr>
<tr><td >Which Floors:</td><td><html:text styleId="search-text" styleId="executiveKitchenFloors" property="executiveKitchenFloors" /></td></tr>
<tr><td ><html:checkbox property="clientKitchen" onchange="floorSelect(this)">Is there a separate Kitchen/Pantry for the Clients/Visitors?:</html:checkbox></td></tr>
<tr><td >Which Floors:</td><td><html:text styleId="search-text" styleId="clientKitchenFloors" property="clientKitchenFloors" /></td></tr>
<tr><td ><html:checkbox property="restrooms" onchange="floorSelect(this)">Are there any private restrooms?:</html:checkbox></td></tr>
<tr><td >Which Floors:</td><td><html:text styleId="search-text" styleId="restroomsFloors" property="restroomFloors" /></td></tr>

<tr><td >*Upload Company Logo: </td><td><html:file styleId="search-text" property="companyLogo"/></td></tr>
<tr><td >Comments:</td><td><html:text styleId="search-text" property="comments"/></td></tr>

<tr><td >*Select the Account Manager:</td>
<td>
<html:select property="accountManager" styleId="accountManager" value="<%=user %>">
<html:options collection="users" property="userid" labelProperty="username" />
</html:select>
</td>
</tr>

</table>
<html:hidden property="dispatch"/>
<html:submit>Save</html:submit>
<%
if(session.getAttribute("editmode")!=null){
%>
<html:submit onclick="document.forms[0].dispatch.value='delete'">Delete</html:submit>
<%
}
%>

</html:form>
<%@ include file="footer.html" %>
</body>
</html:html>

Validation.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">

<form-validation>
<global>
</global>
<formset>
<form name="LoginForm">
<field property="username" depends="required">
<arg0 key="LoginForm.username"/>
</field>
<field property="password" depends="required">
<arg0 key="LoginForm.password"/>
</field>
</form>
<form name="MemberCompanyForm">
<field property="companyName" depends="required">
<arg0 key="MemberCompanyForm.companyName"/>
</field>
<field property="companyStatus" depends="required">
<arg0 key="MemberCompanyForm.companyStatus"/>
</field>
<field property="startDate" depends="required">
<arg0 key="MemberCompanyForm.startDate"/>
</field>
<field property="accountManager" depends="required">
<arg0 key="MemberCompanyForm.accountManager"/>
</field>
<field property="companyLogo" depends="required">
<arg0 key="MemberCompanyForm.companyLogo"/>
</field>
<field property="industry" depends="required">
<arg0 key="MemberCompanyForm.industry"/>
</field>
</form>
</formset>
</form-validation>

ActionForm:

package org.suiteaccess.form;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import org.apache.struts.validator.ValidatorActionForm;
import org.apache.struts.validator.ValidatorForm;

public class MemberCompanyForm extends ValidatorActionForm
{
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}

public String getCompanyStatus() {
return companyStatus;
}
public void setCompanyStatus(String companyStatus) {
this.companyStatus = companyStatus;
}
public String getContactType() {
return contactType;
}
public void setContactType(String contactType) {
this.contactType = contactType;
}
public String getContactFirstName() {
return contactFirstName;
}
public void setContactFirstName(String contactFirstName) {
this.contactFirstName = contactFirstName;
}
public String getContactLastName() {
return contactLastName;
}
public void setContactLastName(String contactLastName) {
this.contactLastName = contactLastName;
}
public String getSalutation() {
return salutation;
}
public void setSalutation(String salutation) {
this.salutation = salutation;
}
public String getWorkPhone() {
return workPhone;
}
public void setWorkPhone(String workPhone) {
this.workPhone = workPhone;
}
public String getAlternatePhone() {
return alternatePhone;
}
public void setAlternatePhone(String alternatePhone) {
this.alternatePhone = alternatePhone;
}
public String getCellPhone() {
return cellPhone;
}
public void setCellPhone(String cellPhone) {
this.cellPhone = cellPhone;
}
public String getFaxNumber() {
return faxNumber;
}
public void setFaxNumber(String faxNumber) {
this.faxNumber = faxNumber;
}
public String getContactEmail() {
return contactEmail;
}
public void setContactEmail(String contactEmail) {
this.contactEmail = contactEmail;
}
public String getAddressType() {
return addressType;
}
public void setAddressType(String addressType) {
this.addressType = addressType;
}
public String getAddressOneOne() {
return addressOneOne;
}
public void setAddressOneOne(String addressOneOne) {
this.addressOneOne = addressOneOne;
}
public String getAddressOneTwo() {
return addressOneTwo;
}
public void setAddressOneTwo(String addressOneTwo) {
this.addressOneTwo = addressOneTwo;
}
public String getAddressOneThree() {
return addressOneThree;
}
public void setAddressOneThree(String addressOneThree) {
this.addressOneThree = addressOneThree;
}
public String getCityOne() {
return cityOne;
}
public void setCityOne(String cityOne) {
this.cityOne = cityOne;
}
public String getStateOne() {
return stateOne;
}
public void setStateOne(String stateOne) {
this.stateOne = stateOne;
}
public String getZipOne() {
return zipOne;
}
public void setZipOne(String zipOne) {
this.zipOne = zipOne;
}
public String getCountryOne() {
return countryOne;
}
public void setCountryOne(String countryOne) {
this.countryOne = countryOne;
}
public String getProvinceOne() {
return provinceOne;
}
public void setProvinceOne(String provinceOne) {
this.provinceOne = provinceOne;
}
public String getAddressTwoOne() {
return addressTwoOne;
}
public void setAddressTwoOne(String addressTwoOne) {
this.addressTwoOne = addressTwoOne;
}
public String getAddressTwoTwo() {
return addressTwoTwo;
}
public void setAddressTwoTwo(String addressTwoTwo) {
this.addressTwoTwo = addressTwoTwo;
}
public String getAddressTwoThree() {
return addressTwoThree;
}
public void setAddressTwoThree(String addressTwoThree) {
this.addressTwoThree = addressTwoThree;
}
public String getCityTwo() {
return cityTwo;
}
public void setCityTwo(String cityTwo) {
this.cityTwo = cityTwo;
}
public String getStateTwo() {
return stateTwo;
}
public void setStateTwo(String stateTwo) {
this.stateTwo = stateTwo;
}
public String getZipTwo() {
return zipTwo;
}
public void setZipTwo(String zipTwo) {
this.zipTwo = zipTwo;
}
public String getCountryTwo() {
return countryTwo;
}
public void setCountryTwo(String countryTwo) {
this.countryTwo = countryTwo;
}
public String getProvinceTwo() {
return provinceTwo;
}
public void setProvinceTwo(String provinceTwo) {
this.provinceTwo = provinceTwo;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEmployeeCount() {
return employeeCount;
}
public void setEmployeeCount(String employeeCount) {
this.employeeCount = employeeCount;
}
public String getMaleEmployeeCount() {
return maleEmployeeCount;
}
public void setMaleEmployeeCount(String maleEmployeeCount) {
this.maleEmployeeCount = maleEmployeeCount;
}
public String getFemaleEmployeeCount() {
return femaleEmployeeCount;
}
public void setFemaleEmployeeCount(String femaleEmployeeCount) {
this.femaleEmployeeCount = femaleEmployeeCount;
}
public String getAvgAge() {
return avgAge;
}
public void setAvgAge(String avgAge) {
this.avgAge = avgAge;
}
public String getFloorCount() {
return floorCount;
}
public void setFloorCount(String floorCount) {
this.floorCount = floorCount;
}
public String getKitchenFloorCount() {
return kitchenFloorCount;
}
public void setKitchenFloorCount(String kitchenFloorCount) {
this.kitchenFloorCount = kitchenFloorCount;
}
public String getKitchenFloors() {
return kitchenFloors;
}
public void setKitchenFloors(String kitchenFloors) {
this.kitchenFloors = kitchenFloors;
}
public boolean getExecutiveKitchen() {
return executiveKitchen;
}
public void setExecutiveKitchen(boolean executiveKitchen) {
this.executiveKitchen = executiveKitchen;
}
public String getExecutiveKitchenFloors() {
return executiveKitchenFloors;
}
public void setExecutiveKitchenFloors(String executiveKitchenFloors) {
this.executiveKitchenFloors = executiveKitchenFloors;
}
public boolean getClientKitchen() {
return clientKitchen;
}
public void setClientKitchen(boolean clientKitchen) {
this.clientKitchen = clientKitchen;
}
public String getClientKitchenFloors() {
return clientKitchenFloors;
}
public void setClientKitchenFloors(String clientKitchenFloors) {
this.clientKitchenFloors = clientKitchenFloors;
}
public boolean getRestrooms() {
return restrooms;
}
public void setRestrooms(boolean restrooms) {
this.restrooms = restrooms;
}
public String getRestroomFloors() {
return restroomFloors;
}
public void setRestroomFloors(String restroomFloors) {
this.restroomFloors = restroomFloors;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
public String getAccountManager() {
return accountManager;
}
public void setAccountManager(String accountManager) {
this.accountManager = accountManager;
}
public FormFile getCompanyLogo() {
return companyLogo;
}
public void setCompanyLogo(FormFile companyLogo) {
this.companyLogo = companyLogo;
}
private String companyName;
private String companyStatus;
private String contactType;
private String contactFirstName;
private String contactLastName;
private String salutation;
private String workPhone;
private String alternatePhone;
private String cellPhone;
private String faxNumber;
private String contactEmail;
private String addressType;
private String addressOneOne;
private String addressOneTwo;
private String addressOneThree;
private String cityOne;
private String stateOne;
private String zipOne;
private String countryOne;
private String provinceOne;
private String addressTwoOne;
private String addressTwoTwo;
private String addressTwoThree;
private String cityTwo;
private String stateTwo;
private String zipTwo;
private String countryTwo;
private String provinceTwo;
private String startDate;
private String employeeCount;
private String maleEmployeeCount;
private String femaleEmployeeCount;
private String avgAge;
private String floorCount;
private String kitchenFloorCount;
private String kitchenFloors;
private boolean executiveKitchen;
private String executiveKitchenFloors;
private boolean clientKitchen;
private String clientKitchenFloors;
private boolean restrooms;
private String restroomFloors;
private String comments;
private String accountManager;
private FormFile companyLogo;
private String industry;
private String dispatch;

public String getDispatch() {
return dispatch;
}
public void setDispatch(String dispatch) {
this.dispatch = dispatch;
}
public String getIndustry() {
return industry;
}
public void setIndustry(String industry) {
this.industry = industry;
}

}

Thanks,
Leela.
 
David Newton
Author
Posts: 12617
IntelliJ IDE Ruby
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
...

Please UseCodeTags. Without them it's impossible to read anything.

Also, kindly post only the immediately relevant portions--600 lines of code and configs is a lot to wade through. Most problems can be reduced their core rather easily. In this case, for example, you could probably reproduce the issue with a very short example.
 
leela addagulla
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi David,

Sorry for that messy Code.
Please find the relevant portions of the code in each of file below.

Struts-Config.xml:




Validation.xml



ActionForm:



The JSP: MemberCompanyDetail.jsp:


 
leela addagulla
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I missed the errors.required property in the Application resources. Its working fine now.
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic