|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,net网页编程beans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。
自界说标签必需完成上面三个接口中的一个:Tag、IterationTag、BodyTag
1.Tag
假如要完成这个接口,能够经由过程扩大TagSupport这个类,来写本人必要的办法,而不必要把Tag接口中的一切办法完成。
Tag接口的办法:doStartTag()、doEndTag()、getParent()、setParent()、release()、setPageContext()
在Tag类代码中不克不及像jsp一样,间接利用out隐含对象,他有一个对象可使用pageContext,经由过程它的getOut()办法能够失掉out对象。在标签外部,会见任何的隐含对象,都是经由过程挪用pageContext的set办法。
2.IterationTag
IterationTag接口与Tag接口相似,用于当一个自界说标签必要反复盘算它的代码体的情形下。它扩大Tag接口并完成了一个新的办法doAfterBody()来完成轮回,这个办法只要从doStartTag()前往EVAL_BODY_INCLUDE时才被挪用。在实行doAfterBody()办法时,假如前往的是EVAL_BODY_AGAIN,那末将再次实行doAfterBody()办法,直到doAfterBody()前往的是SKIP_BODY大概EVAL_BODY_INCLUDE.
3.BodyTag
BodyTag接口扩大了IterationTag并供应了对代码体内容举行操纵的功效。就是在盘算代码体的时分能够对已构成的代码体举行修正。BodyContent对象就是用来保留对自界说标签体盘算的了局。它有一个新办法doInitBody(),这个办法只要在doStartTag()办法前往EVAL_BODY_BUFFERED时才挪用,此时它将创立一个BodyContent对象保留了局。
扩大自界说标签:
增加属性
起首要在tld文件中到场一个属性元素,然后在java文件中必要界说这个属性和它的的setter办法。属性<attribute>元素有四个子元素分离是<name>、<required>、<rtexprvalue>、<description>,这里<rtexprvalue>暗示的是属性是不是承受scriptlet表达式的盘算了局,默许情形下为false,即只能承受静态值。
增加变量
能够在tld文件中给自界说标签到场一个<variable>元素,它的子元素包含<name-given>暗示保留变量的名字,<variable-class>暗示变量的java范例,<declared>用boolean暗示这个变量是不是为新的,<scope>暗示变量的利用局限(AT_BEGIN暗示从肇端标签起,AT_END暗示从停止标签后,NESTED暗示肇端标签和停止标签之间)。界说了变量以后,必要在java文件中把这个变量用pageContext.setAttribute("",object);这里key值应当就是变量对外的名字。
利用TagExtraInfo(TEI)类
这个对象中有两类对象可使用,TagData(保留标签属性的信息)、VariableInfo(形貌代码变量)
一段TagExtraInfo类代码实例:
publicVariableInfo[]getVariableInfo(TagDatadata){
StringvariableName=data.getAttributeString("name");
VariableInfovi=
newVariableInfo(variableName,"String[]",true,VariableInfo.AT_END);
VariableInfo[]tagVariables=newVariableInfo[1];
tagVariables[0]=vi;
returntagVariables;
}
<p>
ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。 |
|