How to dynamically evaluate a tag within a java file

logicgate
05-05-23 3 117

我想做一个propertyTable的tag,根据一个object的各个attribute的属性,显示一个表格,让用户输入相应的数据。这个tag也可以显示一个已经存在的object的属性。在客户端(jsp业面),只需要用
<prefix:propertyTable objectSchemaId="customer"/>

就可以显示如下的一个表格:
――――――――――――――――――--――――――――――――
| 顾客姓名(String): | 文本输入框(能输入文本或数字) |
| 顾客性别(String): | 下拉选择菜单(显示“男”或“女”) |
| 消费额(Double): | 文本输入框(只能输入数字) |
―――――――――――――――――――――――――――――――

object的属性是在xml里定义的,在PropertyTableTag的doStartTag()方法中,会先根据objectSchemaId拿到customer这个object所有的attribute,然后根据每个attribute的数据类型,动态的在客户端显示不同的输入框。比如说如果消费额的数据类型时double,客户端就显示一个文本输入框,但只能输入数字。代码如下:


if(attributeSpec.getDataType().equalsIgnoreCase("Doube"))
{
htmlCode.append(
"<prefix:myInput name='xxx' dataType='Double'/>");
}

其中myInput是我自己写的tag,会根据dataType的不同显示不同的input,但实际上运行的时候myInput的tag handler并没有被调用,而是
<prefix:myInput name='xxx' dataType='Double'/>

被直接显示到客户端。

So,我的问题就是,怎样可以在PropertyTableTag中得到myInput所对应的html代码?

希望各位能给我一些建议。

logicgate
2005-05-24 23:31

怎么没有人回答我的问题呢?希望各位大哥帮帮忙啊。

banq
2005-05-25 08:42

了解Jsp执行顺序:
Jsp中的java代码和tag首先运行,然后是输出html,这是已经推送到客户端,离开服务器了,所以,你要接受html输入,只能在下一个页面里处理,中间有一次post,有一个客户端和服务器端来回

logicgate
2005-05-25 23:20

我了解jsp的执行顺序,我现在想要的是一个能达到我的目的的完美的解决方案。
我现在的做法是,做一些tagfile,把我需要动态输入的tag写在里面。然后在PropertyTableTag中,用pageContext.include()动态的包含所需要的tagfile。这样在客户端就可以看到我需要的效果了。
我不知道有没有其他更好的解决方法?