论坛首页 Java企业应用论坛

[原创]全面增强版 eXtremeComponents !!!!

浏览 33567 次
该帖已经被评为良好帖
作者 正文
   发表时间: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>后,发现和我原来的错误一样。郁闷,呵呵。
0 请登录后投票
   发表时间:2006-11-07  
引用

向楼主请教个问题.

目录extremecomponents组件的过滤功能在过滤日期时不能设置成过滤日期段.
比如不能实现某天到某天的过滤.

这个确实不支持
因为ec的过滤实际上用的就是类似str1.indexOf(str2)的方式
不可能支持那么复杂的过滤
毕竟过滤不是搜索

0 请登录后投票
   发表时间: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 是什么东西

0 请登录后投票
   发表时间:2006-11-07  
还有
如果你要给 rowtag添加属性
建议把相关代码写到
    public void addRowAttributes(TableModel model, Row row) {
    }

    public void modifyRowAttributes(TableModel model, Row row) {
    }
0 请登录后投票
   发表时间: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结合?

多谢支持哈。
0 请登录后投票
   发表时间: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();   
   }  
所在类的代码发出来看看
0 请登录后投票
   发表时间: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?
0 请登录后投票
   发表时间: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() 是在什么地方调用的??
0 请登录后投票
   发表时间: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的问题?
0 请登录后投票
   发表时间:2006-11-07  
怎么老重复代码?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics