当然可以, tag不就是输出定制的页面html代码嘛, 4个property可以都在你自己的tld里面定义
解决方案 »
- 求大神帮我看下是哪里出错
- 请教Hibernate高手: Hibernate Projection 投影问题
- 这样的系统是使用javaScript还是java applet?
- java分页,页面要求显示20条,可是全读出来了
- POI读取Excel问题,,,,求解,求思路
- hibernate中hql的where条件为中文问题
- 我要做一个产品展示的模块,其中图片和文字掺杂在一起的那种,该怎么做?
- 请问哪位高人能向我推荐几本关于spring,struct,hibernate源代码分析或技术内幕的书,谢谢
- 你们好,我刚刚开始学jsp。以后请大家多多帮忙。
- java连接sql的步骤.应下载什么jdbc啊
- 请问是否可以控制 Filter和Servlet谁先初始化
- 急问:windows环境下tomcat ZIP版如何配置开机自动启动
你如何映射你的tag 的property 和ActionForm 的关系?
public int doStartTag() {
JspWriter out = pageContext.getOut();
try{
String outs = " <input type=\"text\" name=\""+p1+"\" size=\"16\" value=\"\" class=\"inp\">"
+ "<input type=\"text\" name=\""+p2+"\" size=\"16\" value=\"\" class=\"inp\">" ;
out.print(outs);
out.print("==>");
}catch(Exception e){
e.printStackTrace();
}
return super.SKIP_BODY;
}
-------------------------------------------------Jsp 代码:
<html:form action="TestTagsAction">
<mytags:fourinputs p1="id1" p2="id2"/> <html:submit property="submit"/>
</html:form>
-------------------------------------------------Form Action:
public ActionForward perform(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
TestForm f =(TestForm)form;
System.out.println("from f,id1="+f.getId1());
f.setId1("ok~");
return mapping.findForward("tags");
}
最后执行结果:
from f,id1=123
但返回到页面时,2个文本框都是空的
加入取的过程就可以了:
...
try{
String p1 = (String) TagUtils.getInstance().lookup(super.pageContext, name, p1, scope);
String p2 = (String) TagUtils.getInstance().lookup(super.pageContext, name, p2, scope);
...
呵呵, 这样当然没有值拉, 你的TAG仅仅生成HTML,但是并没有从formBean中取值的过程。
加入取的过程就可以了:
...
try{
String p1 = (String) TagUtils.getInstance().lookup(super.pageContext, name, p1, scope);
String p2 = (String) TagUtils.getInstance().lookup(super.pageContext, name, p2, scope);
...
------------------------------------------------------------
小弟实在愚钝,兄弟能否详细解释一下这个tag的写法?
下面这样写似乎不行:
ackage com.tag;import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;import org.apache.struts.taglib.tiles.util.TagUtils;
public class FourInputs extends BodyTagSupport {
//String p1;
//String p2;
String p1 = (String) TagUtils.getInstance().lookup(super.pageContext, name, p1, scope);
String p2 = (String) TagUtils.getInstance().lookup(super.pageContext, name, p2, scope);
public String getP1() {
return p1 ;
}
public void setP1(String p1) {
this.p1 = p1;
}
public String getP2() {
return p2;
}
public void setP2(String p2) {
this.p2 = p2;
}
public int doStartTag() throws JspException{
JspWriter out = pageContext.getOut();
try{
String outs =
"<input type=\"text\" name=\""+p1+"\" size=\"16\" value=\"\" class=\"inp\">"
+"<input type=\"text\" name=\""+p2+"\" size=\"16\" value=\"\" class=\"inp\">";
out.print(outs);
out.print(" ==>");
}catch(Exception e){
e.printStackTrace();
}
return super.SKIP_BODY;
}
}
...
try{
String p1Value = (String) TagUtils.getInstance().lookup(super.pageContext, name, p1, scope);
String p2Value = (String) TagUtils.getInstance().lookup(super.pageContext, name, p2, scope);
String outs =
"<input type=\"text\" name=\""+p1+"\" size=\"16\" value=\"" + p1Value + "\" class=\"inp\">"
+"<input type=\"text\" name=\""+p2+"\" size=\"16\" value=\"" + p2Value + "\" class=\"inp\">";
...
我这里怎么没有?
String p1Value = (String)RequestUtils.lookup(super.pageContext, name, p1, scope);