该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-07
也不行。如果改成doAfterBody后,那么要求标签必须又body内容吧,我一般这么写tag :<ec:attribute name="idx" value="${pre.name}"/>,我调试时发现body内容为空时不经过doAfterBody方法。后来就写<ec:attribute name="idx" value="${pre.name}">sssss</ec:attribute>后,发现和我原来的错误一样。郁闷,呵呵。
|
|
返回顶楼 | |
发表时间:2006-11-07
引用 向楼主请教个问题. 目录extremecomponents组件的过滤功能在过滤日期时不能设置成过滤日期段. 比如不能实现某天到某天的过滤. 这个确实不支持 因为ec的过滤实际上用的就是类似str1.indexOf(str2)的方式 不可能支持那么复杂的过滤 毕竟过滤不是搜索 |
|
返回顶楼 | |
发表时间:2006-11-07
引用 也不行。如果改成doAfterBody后,那么要求标签必须又body内容吧,我一般这么写tag :<ec:attribute name="idx" value="${pre.name}"/>,我调试时发现body内容为空时不经过doAfterBody方法。后来就写<ec:attribute name="idx" value="${pre.name}">sssss</ec:attribute>后,发现和我原来的错误一样。郁闷,呵呵。 换成 doEndTag 呢? 我现在手里没有代码 我也只能瞎分析 见笑了 你能不能把 public String getAllAttributesAsString() { StringBuffer attributsRS = new StringBuffer(); Map.Entry entry; for(Iterator it = attributs.entrySet().iterator();it.hasNext();) { entry=(Map.Entry)it.next(); attributsRS.append(entry.getKey()).append("=\"").append(entry.getValue()).append("\"").append(" "); } return attributsRS.toString(); } 方法所在的类的代码弄个全的啊 我实在不知道这里的 attributs Map.Entry 是什么东西 |
|
返回顶楼 | |
发表时间:2006-11-07
还有
如果你要给 rowtag添加属性 建议把相关代码写到 public void addRowAttributes(TableModel model, Row row) { } public void modifyRowAttributes(TableModel model, Row row) { } 里 |
|
返回顶楼 | |
发表时间:2006-11-07
其实,我是参考你的attribute tag写的一个tag。你的attribute tag是取body value,我认为不合适,我用的键值对。你看我的Attribute tag就知道我的Entry是什么东西了。我试过所有的方法,包括doEndTag都不行。
public class ExAttributeTag extends TagSupport { private String value; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return this.value; } public void setValue(String value) { this.value = value; } /** * 增加attribute的标签。 */ private static final long serialVersionUID = -8787546459578181313L; public int doStartTag() throws JspException { if (StringUtils.isNotBlank(value)) { TDTag tag = (TDTag) this.getParent(); tag.addAttribute(name, value); } return SKIP_BODY; } public void release() { name = null; value = null; super.release(); } } 再者有个问题问下:你的扩展ajax应该用在排序上面没有问题,稍微改下代码就行。不过,对于查询,我一般也是在外面放一个form作为查询参数提交。有什么好的方式和你现在的ajax结合? 多谢支持哈。 |
|
返回顶楼 | |
发表时间:2006-11-07
1 用 body value 其实是为了让
attribute里支持其他的tag或者复杂的代码, 如果用value属性那么就只能用简单内容作为value了 其实最好的方法是两种当时都支持. 2 过滤 排序其实都可以用ajax的 只是目前我还没做 3 对于外部的查询,目前不支持,但是我想在技术上是没有难度的. 直接调用 我修改过的那个prototypeajax.js 里的方法就可以了 4 关于attribute的问题 你最好还是把 public String getAllAttributesAsString() { StringBuffer attributsRS = new StringBuffer(); Map.Entry entry; for(Iterator it = attributs.entrySet().iterator();it.hasNext();) { entry=(Map.Entry)it.next(); attributsRS.append(entry.getKey()).append("=\"").append(entry.getValue()).append("\"").append(" "); } return attributsRS.toString(); } 所在类的代码发出来看看 |
|
返回顶楼 | |
发表时间:2006-11-07
public class ExRowTag extends RowTag implements ITag { /** * */ private Row row; private Map attributs = new HashMap(); public String getAllAttributesAsString() { StringBuffer attributsRS = new StringBuffer(); Map.Entry entry; for(Iterator it = attributs.entrySet().iterator();it.hasNext();) { entry=(Map.Entry)it.next(); attributsRS.append(entry.getKey()).append("=\"").append(entry.getValue()).append("\"").append(" "); } return attributsRS.toString(); } public void addAttribute(String key, String value) { attributs.put(key, value); } public void resetAttribute() { attributs.clear(); } public int doEndTag() throws JspException { row.addAttribute(ExTableConstants.EXTEND_ATTRIBUTES, getAllAttributesAsString()); return super.doEndTag(); } public void addRowAttributes(TableModel model, Row row) { this.row = row; row.addAttribute(ExTableConstants.EXTEND_ATTRIBUTES, getAllAttributesAsString()); } public void modifyRowAttributes(TableModel model, Row row) { this.row = row; row.addAttribute(ExTableConstants.EXTEND_ATTRIBUTES, getAllAttributesAsString()); } public void release() { attributs .clear(); super.release(); } } 1:value是rpt的。为什么说value属性那么就只能用简单内容作为value了?不是很明白。如果用List保存多个attribute设置的值,那么一个Attribute的值如果是根据rowBean变化的话,就会在list里面又很多相同的属性。 2:我在外部的form查询,然后怎么把参数传给你写的ajaxsubmit?在extable的form下create hidden?或者是在action后面家&xx=yy? |
|
返回顶楼 | |
发表时间:2006-11-07
1 写<attribute>标签的时候野心还是很大的
如果用value属性 那么怎么实现 <attribute> <其他标签1 .... >....</其他标签1> <其他标签2.... >....</其他标签2> <if ...> <foreach>... </attribute> 把<其他标签1 .... >....</其他标签1> <其他标签2.... >....</其他标签2> <if ...> <foreach>...这些都放到 value="" 的双引号里 我觉得不好吧? 而且直接用body可以省去很多的转义符(\") 2 应该是要用在action后面家&xx=yy 的方式 然后用ajaxsubmit 这个其实就是利用prototype的ajax特性了 和ec本身没有什么关系 3 public String getAllAttributesAsString() 是在什么地方调用的?? |
|
返回顶楼 | |
发表时间:2006-11-07
1:明白,不过,我觉得你还是要给attribute做一个name属性。否则,属性上肯定会重复。支持value简单化,value为空时取判断bodyValue。
2:调用在RowTag: public int doEndTag() throws JspException { row.addAttribute(ExTableConstants.EXTEND_ATTRIBUTES, getAllAttributesAsString()); return super.doEndTag(); } 还有,我测试你的代码,发现,只要切换rowDisplayed的值,然后,header的全选框就无效了,呵呵。js的问题? |
|
返回顶楼 | |
发表时间:2006-11-07
怎么老重复代码?
|
|
返回顶楼 | |