 <p>Well, there is a huge mess here :D</p> <p>First of all, the NullPointerException is thrown because the values are not sent, and the values are not sent because they're not in the form. </p> <p>You should enclose them in the form like this for them to be sent to the <code>ActionSelect</code> action:</p> <pre class="lang-xml prettyprint-override"><code>&lt;s:form action="ActionSelect"&gt; &lt;div class="invoicetext1"&gt;Event Name :&lt;/div&gt; &amp;nbsp;&amp;nbsp; &lt;s:select name="dp.eventState" list="%{state}" class="billlistbox1" id="eventName" /&gt; &lt;div&gt; &lt;s:select name="dp.companyState" class="billlistbox2" listKey="companyState" list="%{status}"&gt; &lt;/s:select&gt; &lt;/div&gt; &lt;div class="invoicetext2"&gt;Company Name :&lt;/div&gt; &lt;div class="clear"&gt;&lt;/div&gt; &lt;/div&gt; &lt;s:submit value=" Click Here"/&gt; &lt;/s:form&gt; </code></pre> <p>Solved the mistery, this doesn't solve your problem, though.</p> <p>You have two main ways to contact actions from a page:</p> <ul> <li><p>Using a standard submit (as you're doing):</p> <p>you either submit a form with its content, or call a link by eventually passing parameters in the querystring. This creates a Request, that will contact an action, that will return an entire JSP, that will be loaded in place of the page you're on now.</p></li> <li><p>Using AJAX:</p> <p>you POST or GET to an action without changing the current page, and the action can return anything, like a JSP snippet, a JSON result, a binary result (through the Struts2 Stream result), etc...</p> <p>You then can choose what to do with the returned data, for example load it inside a <code>&lt;div&gt;</code> that before was empty, or had different content.</p></li> </ul> <p>Now your problem is that you're contacting an action that is not the one you're coming from (is not able to re-render the entire JSP you're on) and you're calling it without using AJAX, then whatever the object mapped to the <code>"success"</code> result is (the whole JSP, or a JSP snippet), it will be loaded in place of the JSP you're on, and it will fail.</p> <p>Since you seem to be quite new to this, I suggest you start with the easy solution (without AJAX), and after being expert with it, the next time try with AJAX.</p> <p>That said, </p> <ol> <li>avoid putting logic in getters and setters;</li> <li>avoid calling methods that are not setter as setters (<code>setState</code>, <code>setStatus</code>...);</li> <li>always make your attributes private;</li> <li>try giving speaking names to variables: state and status for event states and company states are really confusing; and what about "state" instead of "name" (in jsp and on DB is "name");</li> <li>consider loading informations like selectbox content in a <code>prepare()</code> method, so they will be available also in case of errors;</li> <li>you're not closing the connections (and BTW it would be better to use something more evoluted, like Spring JDBC, or better Hibernate, or even better JPA, but for now keep going with the raw queries)</li> </ol> <p>The following is a refactoring of your code to make it achieve the goal. I'll use <code>@Getter</code> and <code>@Setter</code> only for syntactic sugar (they're Lombok annotations, but you keep using your getters and setters, it's just for clarity):</p> <pre class="lang-xml prettyprint-override"><code>&lt;head&gt; &lt;script&gt; $(function(){ $("#event, #company").on('change',function(){ $("#myForm").submit(); }); }); &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;form id="myForm"&gt; &lt;div&gt; ... &lt;s:select id="event" name="event" list="events" /&gt; ... &lt;s:select id="company" name="company" list="companies" /&gt; ... &lt;/div&gt; &lt;/form&gt; &lt;div&gt; ... Table - iterate **dataForBillsJspList** here ... &lt;/div&gt; &lt;/body&gt; </code></pre> <pre class="lang-java prettyprint-override"><code>public class RetrieveEvNaCoNaAction extends ActionSupport { private static final long serialVersionUID = -5418233715172672477L; @Getter private List&lt;Event&gt; dataForBillsJspList = new ArrayList&lt;Event&gt;(); @Getter private List&lt;String&gt; events = new ArrayList&lt;String&gt;(); @Getter private List&lt;String&gt; companies = new ArrayList&lt;String&gt;(); @Getter @Setter private String event = null; @Getter @Setter private String company = null; @Override public void prepare() throws Exception { Connection con; try { con = new Database().Get_Connection(); // load companies PreparedStatement ps = con.prepareStatement("SELECT DISTINCT company_name FROM event"); ResultSet rs = ps.executeQuery(); while (rs.next()) { companies.add(rs.getString("company_name")); } // load events ps = con.prepareStatement("SELECT DISTINCT event_name FROM event"); rs = ps.executeQuery(); while (rs.next()) { events.add(rs.getString("event_name")); } } catch(Exception e) { e.printStackTrace(); } finally { con.close(); } } @Override public String execute() { Connection con; try { con = new Database().Get_Connection(); // load the table. The first time the table is loaded completely String sql = "SELECT EVENT_ID, EVENT_NAME, COMPANY_NAME, CONTACT_PERSON, CONTACT_NO, EMAIL_ID, EVENT_VENUE, " + "date_format(FROM_DATE,'%d/%m/%Y') as dateAsFrom, date_format(TO_DATE,'%d/%m/%Y') as dateAsTo ,EVENT_TIME " + "FROM event"; String where = ""; // if instead this action has been called from the JSP page, // the result is filtered on event and company: if (event!=null &amp;&amp; company!=null) { where = " WHERE event_name = ? AND company_name = ?"; } // load companies PreparedStatement ps = con.prepareStatement(sql + where); if (where.length()&gt;0) { ps.setString(1,event); ps.setString(2,company); } ResultSet rs = ps.executeQuery(); while (rs.next()) { dataForBillsJspList.add(new Event(rs.getString("EVENT_ID"),rs.getString("EVENT_NAME"),rs.getString("COMPANY_NAME"), rs.getString("CONTACT_PERSON"),rs.getString("CONTACT_NO"),rs.getString("EMAIL_ID"), rs.getString("EVENT_VENUE"), rs.getString("dateAsFrom"), rs.getString("dateAsTo"), rs.getString("EVENT_TIME"))); } } catch(Exception e) { e.printStackTrace(); } finally { con.close(); } return SUCCESS; } } </code></pre> <p>It is a kickoff example, but it should work.</p> <p>The next steps are:</p> <ol> <li>create a POJO with id and description, show the description in the select boxes, but send the id</li> <li>use header values ("please choose an event"...) and handle in action conditional WHERE (only company, only event, both)</li> <li><strong>PAGINATION</strong></li> </ol> <p>Good luck</p>