<%@ 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[i].equals(""))
{
errors.put(keys[i],keys[i]);
}
}
out.println(errors.get("firstname"));
out.println(errors.get("lastname"));
%>
Please advise.
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[i].equals(""))
> {
> errors.put(keys[i],keys[i]);
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.
--
Lew
This is almost identical to the question you asked earlier:
http://groups.google.com/group/comp.lang.java.programmer/browse_thread/thread/bbdb697ccfa392ea/8662e0b6d480896c?lnk=raot
Please don't force people to repeat their answers to you.
- Oliver