请问各位高人在Struts1.2开发中遇到的两个问题,谢谢,马上给分哈!!!
1.<html:messages>标签的用法
我在我应用程序的Action类中这样保存错误:
ActionMessages messages = new ActionMessages();
ActionMessage errormessage = new ActionMessage("error.employee.emptyname");
messages.add(ActionMessages.GLOBALMESSAGE,errormessage);
savaError(request,messages);
我想当在Action类中遇到错误时,通过使用<html:messages id="MyMessages" />标签在Jsp页面中显示在资源文件中定义的属于error.employee.emptyname键的错误信息,可是我这样使用<html:messages id="MyMessages" />没有能成功,没办法,只好索性又换回使用<html:errors />来显示错误信息,这样使用是成功的,可是为什么使用<html:messages>标签却没有成功呢?如果我指定要使用<html:messages>标签时,应该怎样使用这个标签呢?请各位高人能帮我解决一下,谢谢!!!
2.这段使用<logic:iterate>标签代码为什么要这样写:
为了显示在Jsp页面中显示复选框和复选框的值,我定义有一个自定义标签,其中内含有这些复选框的值,这个自定义标签的代码如下:
package com.example;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.util.ArrayList;
public class skillTag extends TagSupport
{
public int doStartTag()
{
ArrayList skilllist = new ArrayList();
skilllist.add("EJB");
skilllist.add("JDBC");
skilllist.add("JMS");
skilllist.add("JTA");
skilllist.add("Servlet");
skilllist.add("Jsp");
skilllist.add("Java Mail");
pageContext.setAttribute("skillList",skilllist);
return SKIP_BODY;
}
}
为了在Jsp页面中显示这些复选框和复选框的值,我定义有下列这些代码在Jsp页面中使用:
<td>
<logic:iterate id="currentSkill" name="skillList">
<html:multibox property="skills">
<%= currentSkill %>
</html:multibox>
<%= currentSkill %>
<br>
</logic:iterate>
</td>
<logic:iterator>标签的作用是迭代,这不用多说了。其中id属性文档中是这样说的:
The name of a page scope JSP bean that will contain the current element of the collection on each iteration, if it is not null.
而name属性除了在文档中说的两个功能以外:
The name of the JSP bean containing the collection to be iterated (if property is not specified), or the JSP bean whose property getter returns the collection to be iterated (if property is specified).
好象在这种情况下又多了一个含义:被pageContext所设置的一个页面范围的属性名,在这个属性中所联系的对象它是一个Collection。
我所不明白是这个地方
<html:multibox property="skills">
<%= currentSkill %>
</html:multibox>
<%= currentSkill %>
<br>
为什么在这里页面范围的Jsp Bean的名字currentSkill(而在这里我看根本不是文档中所说的什么页面范围的Jsp Bean的名字,我看是以后要使用的代码段变量的名字,在这个代码段变量中保存着Collection集合中当前元素的句柄)要用两次,用一次还不行,只用一次代码段变量currentSkill它只会显示相同数量的复选框,定义在自定义标签程序处理类中复选框它的值就不显示了,不知道这是为什么???<logic:iterate>标签中的id属性到底定义的是什么东西??????currentSkill中到底包含着什么?为什么第一次显示的是相同数量的复选框,而第二次显示的才是复选框的值???复选框和复选框的值到底如何作具体的区分呢???
谢谢各位就以上两个问题能为我做一个详细的解答,我对以上两个问题感到十分的迷惑!!!谢谢,马上给分哈!!!