在 ui:repeat 内部时,不保留操作参数的值
下面是我的代码:
<ui:repeat var="status" value="#{showUpdatedAction.statusUpdates}">
<h:panelGroup>
#{status.content}
<h:form>
<h:commandLink value="Like" action="#{statusAction.likeStatus(status.id,1)}" />
</h:form>
</h:panelGroup>
<ui:repeat>
#{status.content}
显示正确的值。当我使用 #{status.id}
打印状态 ID 时,它也会给出正确的值。但是当我单击命令链接时,传递的 status.id 值始终为 0。
有人可以告诉我为什么会发生这种情况以及如何避免这种情况吗?
谢谢。
编辑 1
有趣的是,当我不是在函数中传递参数,而是使用
传递参数时,它工作得很好。有人可以对此发表评论吗?
Below is my Code:
<ui:repeat var="status" value="#{showUpdatedAction.statusUpdates}">
<h:panelGroup>
#{status.content}
<h:form>
<h:commandLink value="Like" action="#{statusAction.likeStatus(status.id,1)}" />
</h:form>
</h:panelGroup>
<ui:repeat>
#{status.content}
shows correct values. When I print id of status using #{status.id}
, it also gives correct value. But when I click the command link, value passed is always 0 for status.id.
Can someone tell me why this happens and how can I avoid this?
Thank you.
Edit 1
Interestingly, when instead of passing the parameter in function, I pass it using <f:param>
, it works perfectly. Can anyone comment on that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为您应该尝试使用
而不是
。I think you should try using
<c:forEach>
instead of<ui:repeat>
.我无法准确地告诉您,为什么在您的情况下
status.id
为 0,但您可以直接在 EL 表达式中传递整个status
对象。像这样:然后在您的
likeStatus
中,您只需执行int statusId = status.getId()
或类似操作,即可获得所需的内容。作为补充:使用
实际上应该只是一种后备方案,因为人们说无论出于何种原因都不应该将 JSTL 与 JSF 混合使用。I can't tell you exactly, why
status.id
is 0 in your case but you can directly pass the wholestatus
object in your EL expression. Like so:Then in your
likeStatus
you simply do aint statusId = status.getId()
or similar and you have what you want.As an addition: Using
<c:forEach>
should actually be just a fallback, because people say you shouldn't mix JSTL with JSF for whatsoever reasons.您在 JSF 页面中的代码很好,只需检查一下...(也在我这边生成了 beans:showUpdatedAction、statusAction 和一个简单的类 Status)
,它打印了 ids 很好
id1___1
id4___1
也许它与id 的类型或者你的 beans 的类型?
Your code in the JSF page is just fine, just checked it... (generated the beans at my side too : showUpdatedAction, statusAction , and a simple class Status)
which prints the ids just fine
id1___1
id4___1
Maybe its something to do with the type of the id or something with your beans?