0
我需要显示拍卖物品的清单。当用户点击每个项目旁边的“出价”按钮时,我想让ajax在此拍卖项目下打开出价表单。所以我打算使用ui:repeat
和f:ajax
(如下所示),但是当我进入页面时,所有拍卖项目都在其旁边打开了投标组件。点击任何按钮都不会执行任何操作。这是代码(与投标书格式简化到只是一个outputText:
)f:ajax在ui里面:重复
<h:form>
<table border="1">
<ui:repeat var="parcel" varStatus="status" value="#{auctionsViewBean.parcels}">
<tr>
<td><h:commandButton value="Bid" action="nothing">
<f:ajax render="bidView"/>
</h:commandButton></td>
<td>#{status.index + 1}</td>
<td>#{parcel.a}</td>
<td>#{parcel.b}</td>
<td>#{parcel.c}</td>
</tr>
<tr><td><h:outputText id="bidView" value="#{auctionsViewBean.showBidViewForParcel(parcel)}">Some text</h:outputText></td></tr>
</ui:repeat>
</table>
</h:form>
我在做什么错?我怎样才能指定与点击拍卖项目相关的投标组件?
感谢您的回复,BalusC。其实我没有嵌套的形式,我说上面的代码只是简化了,因为我删除了表中的一些元素。简而言之,如果我可以使这个代码在上面工作,我会很好。所以我猜这个问题是:如何让页面在第一次呈现时不会出现在“bidView”元素中,并且只有在点击后才会出现点击拍卖? (这是一个总的新手问题,我敢肯定我错过了一些简单的东西。) – Herzog
啊对了。你的问题始终是模棱两可的,你的错误尝试已经使我错误地理解你真正需要的东西(基本上,我知道你的情况下''没有做任何事情 - 这是不真实的)。我更新了答案。 –
BalusC
非常感谢您抽出时间,BalusC。它现在起作用,但只是部分。当我进入页面时,组件被隐藏起来。当我点击按钮时,显示正确的一个。到现在为止还挺好。但似乎isShowBidView正在为循环的每次迭代调用 - 直到我点击按钮的行。因此,例如,如果有4行,并且我点击第三行旁边的按钮,则会调用第一行,第二行和第三行的isShowBidView。前两项正确的错误,第三项正确的错误。这是怎么回事? – Herzog