选择a时JSTL设置变量会话

时间:2019-05-13 00:04:28

标签: jsp jstl

大家好,我目前正在编写一个Web应用程序,我遇到了使用jstl变量设置session属性的问题。

在我的应用程序中,我使用jstl foreach标记显示对象“海报”列表。因此,在UI上,我有这些列表,我可以拖放海报表的行,以查看我选择的海报的详细版本。在这里,我需要获取一个变量“ posterId”,以将其传递到servlet(使用会话或其他方法)上,这是我的代码:

<c:forEach var="poster" items="${listePosters}" varStatus="loop">
    <tr data-sujets='${listeSujets[loop.index].titre}'
        data-etat= '${listeValide[loop.index]}'
        id="draggable-${loop.index}" draggable='true'
        ondragstart="drag(event,${loop.index});"
        onmouseout="fmouseup(${loop.index});"
        ondragend="enddrag(event,${loop.index});"
        onmousedown="fmousedown(${loop.index});"
        onmouseup="fmouseup(${loop.index});"
        onClick= "<c:set var="idPoster" value="${poster.idPoster}" 
        scope="session"/>;">        
    </tr>
</c:forEach>

因此,我这里有2个发布者,从理论上讲,当我单击带海报1的会话时,会话属性应设置为1;当我单击带海报2的会话时,会话属性应设置为2。我知道我的{{1} }得到正确的值,因为我做了${poster.idPoster}而不是window.alert()行,并且得到了正确的值,所以这就是为什么我不理解为什么会话无法正确设置的原因

预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你做不到, 您正在调整的是在客户端设置服务器端值,这是不可能的。 您需要使用form(html)或ajax(javascript)或其他方法将所选值发送回服务器。

实际上,您是将会话值预先设置到最后一个打印服务器端。