Code Bye

Velocity不能读取Action中List

 //Action
private List<Task> dTaskAllLists = new ArrayList<Task>();
private String str;
private Task task;
//以上都有set & get方法


public String task(){

		dTaskAllLists = taskingService.getTaskList(1);//控制台能打印,有5条数据
		str = "Hello World";
		task = (Task) dTaskAllLists.get(0);
		return "task";
	}
<!--VM 页面-->
${str} <!-----能正常打印输出-->
${task.task_create_time}  <!----也能正常打印--->
${dTaskAllLists.size()}       <!---没有显示,一片空白--->

#foreach($taskList in $dTaskAllLists )
          $!{taskList.task_create_time}<!--不能循环遍历,里面没有数据-->
#end

97分
奇怪,换个名字试试
引用 1 楼 shixitong 的回复:

奇怪,换个名字试试

我之前也是以为名字问题,但是我换了很多!证明不关这事

随便在后台定义一个list,然后放点值进去,还有把取长度那条语句删了,然后再前台循环看看呢
引用 3 楼 shixitong 的回复:

随便在后台定义一个list,然后放点值进去,还有把取长度那条语句删了,然后再前台循环看看呢

我定义了一个String类型的List,在前台能够获取的到,这是怎么一回事呢?难道是我的JavaBean有问题?

应该不是,在velocity应该没有直接点size()这样的语法吧,你可以去查查
引用 5 楼 shixitong 的回复:

应该不是,在velocity应该没有直接点size()这样的语法吧,你可以去查查

是可以的,获取到List的大小!我输出点size()的目的是测试List有没有值!
但是dTaskAllLists 却始终没有值!不知道怎么回事,我怀疑是JavaBean的问题,但又找不出是哪里的问题!

那你循环你string数组的时候输出list.size()还有值,还有把你的sting换为你的bean再试试
引用 7 楼 shixitong 的回复:

那你循环你string数组的时候输出list.size()还有值,还有把你的sting换为你的bean再试试

private List<Task> dTaskAllLists = new ArrayList<Task>();    //获取bean前台获取不到
private List<String> dTaskAllLists = new ArrayList<String>();//前台能够获取

<!--VM 页面-->
${str} <!-----能正常打印输出-->
${task.task_create_time}  <!----也能正常打印--->

#foreach($taskList in $!{dTaskAllLists} )
          $!{taskList.task_create_time}<!--不能循环遍历,里面没有数据-->
#end

#foreach($taskList in $dTaskAllLists )
改为
#foreach($taskList in $!{dTaskAllLists} )

试过了。没有用
要是我直接$dTaskAllLists  ,就这样页面都不能直接打印

1分
 试试、$!{dTaskAllLists}
我一般都加!
引用 12 楼 u012345283 的回复:

 试试、$!{dTaskAllLists}
我一般都加!

试过了,没用


1分
这种动态语言不熟悉。 
我能提点意见吗。 
首先.size()应该换成应该是去掉用他的getSize()方法。 故获取不到。  

1分
然后再去试试9楼的方法。 确定不是前面取size时有问题导致后面无法显示。 
完毕。  
引用 14 楼 u014654823 的回复:

这种动态语言不熟悉。 
我能提点意见吗。 
首先.size()应该换成应该是去掉用他的getSize()方法。 故获取不到。  

这是Velocity模板的语法

引用 10 楼 janda2011 的回复:

试过了。没有用

不知道楼主问题解决了,我后来测试了下还是你名字起的有问题
dTaskAllLists
如果我名字改为dtaskAllLists就可以了
不改的话,如果调用工具的自动get和set是下面的这样

	public List<Task> getdTaskAllLists() {
		return dTaskAllLists;
	}

	public void setdTaskAllLists(List<Task> dTaskAllLists) {
		this.dTaskAllLists = dTaskAllLists;
	}

这样struts是映射不到的(get和set后面第一个字母小写了)

引用 18 楼 shixitong 的回复:
Quote: 引用 10 楼 janda2011 的回复:

试过了。没有用

不知道楼主问题解决了,我后来测试了下还是你名字起的有问题
dTaskAllLists
如果我名字改为dtaskAllLists就可以了
不改的话,如果调用工具的自动get和set是下面的这样

	public List<Task> getdTaskAllLists() {
		return dTaskAllLists;
	}

	public void setdTaskAllLists(List<Task> dTaskAllLists) {
		this.dTaskAllLists = dTaskAllLists;
	}

这样struts是映射不到的(get和set后面第一个字母小写了)

感谢,我也找到问题所在了,dTaskAllLists自动生成set&get 的话,(get和set后面第一个字母小写了)还是小写!便没有变成大写! 这让我以后怎么相信这工具自动生成啊!

引用 12 楼 u012345283 的回复:

 试试、$!{dTaskAllLists}
我一般都加!

感谢


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Velocity不能读取Action中List