将java String Array发送到.gsp并显示所有元素

时间:2015-01-09 23:28:52

标签: grails gsp

我在控制器中有一个典型的java字符串数组String[] token = new String[20]。 我想将此数组传递给.gsp文件,其中token中的所有元素都打印出换行符。 在我认为<g:each>应该完全按照需要做的事情之前已经太久了。但是,在尝试了多种选择之后,到目前为止似乎没有任何效果。

http://grails.org/doc/latest/ref/Tags/each.html 本指南显示了一些示例,但是,它们似乎都不适合我的需要,因为我需要读取一个数组,而不是显示不同的域变量(我实际上没有运气就试过它们)。

Grails iterating in gsp vs. accessing Map elements这个答案不起作用

http://grails.1312388.n4.nabble.com/How-to-display-the-contents-of-a-string-Array-in-GSP-td1355405.html这开始看起来非常接近我所需要的,但是这也没有用。

我已花了好几个小时尝试所有这些事情的不同组合和变体。每次它导致错误或没有元素被打印出来。我知道他们在那里,因为如果我特别要求他们(只为一个元素),我可以看到结果。

在我的控制器中,我尝试使用tokenrender view:'myFancy.gsp', model:['lsOut':token]传递return [lsOut:token]。 (即使return ['lsOut':token]也是如此)

我没有想法。关于下一步尝试什么或者我可以再试一次的任何建议(因为我可能犯了一些错误)?

控制器:

def readContents() 
{
    String s = new RunSshCommand().execute() {
        host = params.ServerAddress
        username = params.Username
        password = params.Password
        command = "ls -m Funk"
        }

    String[] token = new String[20]
    token = s.split(",")
    //render view:'readContents.gsp', model:['i':token]
    return [lsOut:token]
}

GSP文件

    <ul>
        <g:each in="${token}" var="lsOut">
            <td>${lsOut.value?.encodeAsHTML()}</td>
        </g:each>
    </ul>

1 个答案:

答案 0 :(得分:1)

您的GSP文件需要获取模型中名为lsOut的列表并迭代所有元素。请注意,对于<td>,所有元素都将显示在单个表格行中。您必须使用HTML分隔符<li>才能在<ul>列表中的多行显示元素:

<ul>
    <g:each in="${lsOut}" var="it">
        <li>${it.encodeAsHTML()}</li>
    </g:each>
</ul>