Reputation:
I am displaying 24 checkboxes. I want to get all the values of checked checkboxes in action class and insert it as a new record inside database.Inserting will be done once I succeed in getting the values of checked checkboxes on button click.
I referred this link in which I followed the answer answered by steven sir but with help of that I can display only boolean values but here I want text values of checkboxes selected.
So below is my JSP page.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<s:form action="eventInsertAction">
<!-- Main content -->
<section class="content">
<!-- Small boxes (Stat box) -->
<div class="row">
<div class="contetpanel">
<div>
<div class="crevtbl">
<div class="crevtblRow">
<div class="crevtblCell">Event Name</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2"><input name="event.eventName" class="formtextfield" type="text"><s:fielderror fieldName="event.eventName"/></div>
</div>
<div class="crevtblRow">
<div class="crevtblCell">Company Name</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2"><input name="event.companyName" class="formtextfield" type="text" ><s:fielderror fieldName="event.companyName"/></div>
</div>
<div class="crevtblRow">
<div class="crevtblCell">Contact Person Name</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2"><input name="event.contactPerson" class="formtextfield" type="text" ><s:fielderror fieldName="event.contactPerson"/></div>
</div>
<div class="crevtblRow">
<div class="crevtblCell">Contact</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2"><input name="event.contactNumber" class="formtextfield" type="text" ><s:fielderror fieldName="event.contactNumber"/></div>
</div>
<div class="crevtblRow">
<div class="crevtblCell">Email</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2"><input name="event.emailId" class="formtextfield" type="text" ><s:fielderror fieldName="event.emailId"/></div>
</div>
<div class="crevtblRow">
<div class="crevtblCell">Event Venue</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2"><input name="event.eventVenue" class="formtextfield" type="text" ><s:fielderror fieldName="event.eventVenue"/></div>
</div>
<div class="crevtblRow">
<div class="crevtblCell">Event Date</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2">From : <input name="event.fromDate" class="formtextfield1" type="text" placeholder="YYYY/MM/DD"> To : <input name="event.toDate" class="formtextfield1" type="text" placeholder="YYYY/MM/DD"></div>
</div>
<div class="crevtblRow">
<div class="crevtblCell">Event Time</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2"><input name="event.eventTime" class="formtextfield1" type="text" placeholder="HH:MM AM/PM" ><s:fielderror fieldName="event.eventTime"/></div>
</div>
<div class="crevtblRow">
<div class="crevtblCell">License Required</div>
<div class="crevtblCell1">:</div>
<div class="crevtblCell2">
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Rangabhoomi</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Fire NOC</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Fire Engine</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Premises & NOC</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Performance</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">PWD</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Local Police</span><br />
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Collector</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">PPL</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">IPRS</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Traffic</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Liquor License</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Ticket Selling License</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">BMC Parking</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Parking</span><br />
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Port Trust</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Novex</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Foreign Artist</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">DCP Office</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Fire Marshal</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Sale Tax NOC</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Other</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Extra</span>
<input name="event.licenserequired" type="checkbox" class="formcheckbox" value=""><span class="formcheckbox_content">Commission</span>
</div>
</div>
<div class="crevtblRow">
<div class="crevtblCell"></div>
<div class="crevtblCell1"></div>
<div class="crevtblCell2"><button type="submit" class="btn btn-primary">Create Event</button></div>
</div>
</div>
</div>
</div>
</div>
</section>
</s:form>
</body>
</html>
Below is my setters and getters class
package com.ca.pojo;
public class Event {
public Event() {
// TODO Auto-generated constructor stub
}
private String eventName;
private String companyName;
private String contactPerson;
private String contactNumber;
private String emailId;
private String eventVenue;
private String fromDate;
private String toDate;
private String eventTime;
private String licenserequired;
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public String getContactPerson() {
return contactPerson;
}
public void setContactPerson(String contactPerson) {
this.contactPerson = contactPerson;
}
public String getContactNumber() {
return contactNumber;
}
public void setContactNumber(String contactNumber) {
this.contactNumber = contactNumber;
}
public String getEmailId() {
return emailId;
}
public void setEmailId(String emailId) {
this.emailId = emailId;
}
public String getEventVenue() {
return eventVenue;
}
public void setEventVenue(String eventVenue) {
this.eventVenue = eventVenue;
}
public String getFromDate() {
return fromDate;
}
public void setFromDate(String fromDate) {
this.fromDate = fromDate;
}
public String getToDate() {
return toDate;
}
public void setToDate(String toDate) {
this.toDate = toDate;
}
public String getEventTime() {
return eventTime;
}
public void setEventTime(String eventTime) {
this.eventTime = eventTime;
}
public String getLicenserequired() {
return licenserequired;
}
public void setLicenserequired(String licenserequired) {
this.licenserequired = licenserequired;
}
}
Below is my Action class
package com.ca.actions;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.ca.database.Database;
import com.ca.pojo.Event;
import com.opensymphony.xwork2.ActionSupport;
public class EventInsertAction extends ActionSupport {
private String eventId;
Event event;
String name;
public EventInsertAction() {
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEventId() {
return eventId;
}
public void setEventId(String eventId) {
this.eventId = eventId;
}
public Event getEvent() {
return event;
}
public void setEvent(Event event) {
this.event = event;
}
@Override
public String execute() throws Exception {
System.out.println("Event"+event.getLicenserequired());
// TODO Auto-generated method stub
System.out.println("Hi Mahi"+name);
List<Integer> ints = new ArrayList<Integer>();
int i = 0;
for (int i1 = 0; i1 < 10000; i1++) {
ints.add(i1);
}
// Collections.shuffle(ints);
String Id = String.valueOf(ints.get(i++));
eventId = event.getEventName() + Id;
System.out.println(eventId);
try {
Database database = new Database();
Connection con = database.Get_Connection();
System.out.println("Driver Loaded");
PreparedStatement st = con
.prepareStatement("insert into event(EVENT_ID,EVENT_NAME,COMPANY_NAME,CONTACT_PERSON,CONTACT_NO,EMAIL_ID,EVENT_VENUE,FROM_DATE,TO_DATE,EVENT_TIME)"
+ "values(?,?,?,?,?,?,?,?,?,?)");
st.setString(1, eventId);
st.setString(2, event.getEventName());
st.setString(3, event.getCompanyName());
st.setString(4, event.getContactPerson());
st.setString(5, event.getContactNumber());
st.setString(6, event.getEmailId());
st.setString(7, event.getEventVenue());
st.setString(8, event.getFromDate());
st.setString(9, event.getToDate());
st.setString(10, event.getEventTime());
st.executeUpdate();
System.out.println("success");
con.close();
} catch (Exception e) {
System.out.println(e);
}
return "success";
}
@Override
public void validate() {
// TODO Auto-generated method stub
super.validate();
if (event.getEventName().isEmpty()) {
System.out.println("Event Name");
addFieldError("event.eventName", "Please Enter Event Name ..");
}
if (event.getCompanyName().isEmpty()) {
addFieldError("event.companyName", "Please Enter Company Name.. ");
}
if (event.getContactNumber().isEmpty()) {
addFieldError("event.contactNumber",
"Please Enter Contact Number..");
} else {
String expression = "^\\+?[0-9\\-]+\\*?$";
CharSequence inputStr = event.getContactNumber();
Pattern pattern = Pattern.compile(expression,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (!matcher.matches())
addFieldError("event.contactNumber", "Invalid Contact Number..");
}
if (event.getContactPerson().isEmpty()) {
addFieldError("event.contactPerson",
"Please Enter Contact Person Name..");
}
if (event.getEmailId().isEmpty()) {
addFieldError("event.emailId", "Please Enter Email ID..");
} else {
String expression = "^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
CharSequence inputStr = event.getEmailId();
Pattern pattern = Pattern.compile(expression,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (!matcher.matches())
addFieldError("event.emailId", "Invalid Email Address..");
}
if (event.getEventVenue().isEmpty()) {
addFieldError("event.eventVenue", "Please Enter Event Venue..");
}
if (event.getFromDate().isEmpty()) {
addFieldError("event.fromDate", "Please Enter Date..");
}
if (event.getToDate().isEmpty()) {
addFieldError("event.toDate", "Please Enter To Date..");
}
if (event.getEventTime().isEmpty()) {
addFieldError("event.eventTime", "Please Enter Event Time..");
}
}
}
Upvotes: 3
Views: 11372
Reputation:
I just changed my datatype of variable from boolean to string[] . It will store the values of the checkbox selected. Below is my jsp.
<s:form action="resultAction" namespace="/">
<h2>
<input name="checkMe" type="checkbox"
class="formcheckbox" value="Rangabhoomi"><span
class="formcheckbox_content">Rangabhoomi</span>
<input
name="checkMe" type="checkbox" class="formcheckbox"
value="Fire Noc"><span class="formcheckbox_content">Fire NOC</span>
</h2>
<input type="submit" value="Submit" />
</s:form>
Below is my action class
package com.checkboxInStruts2;
import com.opensymphony.xwork2.ActionSupport;
public class CheckboxAction extends ActionSupport
{
private String checkMe[];
public CheckboxAction() {
// TODO Auto-generated constructor stub
}
public String[] getCheckMe() {
return checkMe;
}
public void setCheckMe(String[] checkMe) {
this.checkMe = checkMe;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
for(int i=0;i<checkMe.length;i++)
{
System.out.println(checkMe[i]);
}
return "success";
}
}
and for display use below tag on jsp.It will display the array of string values of selected checkboxes.
<s:property value="checkMe"/>
Upvotes: 0
Reputation: 1
The value
attribute should not be empty value=""
. If you followed the linked answer you have seen that s:checkbox
tag is used. When this tag is rendered it provided the field value for both checked and unchecked checkbox. And remarking Dave Newton's notice in his book "It should have values true
or false
the only viable values for the moment. These are only values that work correctly with checkbox
interceptor."
The tag renders a single checkbox . At the time of this writing it only works well with Boolean (or boolean) properties. Attempting to preselect a checkbox with, for example, a string value only works if the string is true or false .
There's an example Struts 2 checkbox example, which is using such fieldValue
attribute.
If you want a deep incite into how checkbox
interceptor is working you can read <s:checkbox>
not auto populating in struts2 form.
Another example that is using multiple checkboxes Struts 2 multiple check boxes example. Unlike the s:checkbox
it doesn't work with any unchecked values and you can map values directly using listKey
and listValue
attributes.
Upvotes: 1