HashMap and Array issue

T

teser3

I have this JSP where I have alot of fields with conditions.
I would like to make it more efficient and use a for loop.
Here is an example (showing 2 fields for example only):

<%@ page language="java" import="java.util.*" %>
<%
HashMap errors = new HashMap();
String firstname = "Joe";
String lastname = "Miller";

if (!firstname.equals(""))
{
errors.put("firstname",firstname);
}
if (!lastname.equals(""))
{
errors.put("lastname",lastname);
}

out.println(errors.get("firstname"));
out.println(errors.get("lastname"));
%>


It prints out Joe Miller

Now my attempt below to put this in a loop prints out null null:

<%@ page language="java" import="java.util.*" %>
<%
HashMap errors = new HashMap();
String firstname = "Joe";
String lastname = "Miller";
//String[] keys = {"firstname", "lastname"};
String[] keys = {firstname, lastname};
for(int i = 0;i < keys.length;i++)
{
if(!keys.equals(""))
{
errors.put(keys,keys);
}
}

out.println(errors.get("firstname"));
out.println(errors.get("lastname"));

%>

Please advise.
 
L

Lew

I have this JSP where I have alot of fields with conditions.
I would like to make it more efficient and use a for loop.
Here is an example (showing 2 fields for example only):

<%@ page language="java" import="java.util.*" %>
<%
HashMap errors = new HashMap();
String firstname = "Joe";
String lastname = "Miller";

if (!firstname.equals(""))
{
errors.put("firstname",firstname);
}
if (!lastname.equals(""))
{
errors.put("lastname",lastname);
}

out.println(errors.get("firstname"));
out.println(errors.get("lastname"));
%>


It prints out Joe Miller

Now my attempt below to put this in a loop prints out null null:

<%@ page language="java" import="java.util.*" %>
<%
HashMap errors = new HashMap();

or better: Map errors = new HashMap();
String firstname = "Joe";
String lastname = "Miller";
String[] keys = {firstname, lastname};

This array contains {"Joe", "Miller"}
for(int i = 0;i < keys.length;i++)
{
if(!keys.equals(""))
{
errors.put(keys,keys);


This will insert the <K, V> pairs <"Joe", "Joe"> and <"Miller", "Miller"> into
the Map.

You're using the exact same value for both the key and the value of each
Map.Entry.
}
}

out.println(errors.get("firstname"));

A better idiom is
<%= errors.get( "firstname" ) %>

"firstname" was never entered into the Map as a key, only "Joe" and "Miller".
out.println(errors.get("lastname"));

"lastname" was never entered into the Map as a key, only "Joe" and "Miller".

After you get the hang of doing this in a JSP, figure out how to move all Java
source out of the JSP and into logic classes invoked from a servlet.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top