我想要一个链接,当用户点击它时,它应该执行以下操作:
- 将密钥保存到会话中
- 使用另一个 JSF 页面打开一个新窗口
- 它不应该重新加载当前页面
我不知道如何解决这个问题。
当我保存密钥并打开新窗口时,密钥为空。
也许保存密钥的过程太慢了?
以及如何防止页面重新加载?
这是我当前的代码:
JavaScript
function openWin2(url)
{
var w = 800;
var h = window.innerHeight - 100;
var left = ((screen.width-w)/2);
var top = ((screen.height-h)/2);
window.open(url, 'Tax', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
}
xhtml
<ui:repeat value="#{main.list}" var="items">
<h:commandLink action="#{main.setClickedId(items.itemId)}">
<table onclick="openWin2('immobilie.xhtml')"><tr><td>Hello</td></tr></table>
</h:commandLink>
</ui:repeat>
ManagedBean
保存
public void setClickedId(String clickedId) {
this.clickedId = clickedId;
FacesContext context = FacesContext.getCurrentInstance();
Map<String, Object> map = context.getExternalContext().getSessionMap();
if(map.containsKey("id")){map.remove("id");}
map.put("id", clickedId);
}
加载
FacesContext context = FacesContext.getCurrentInstance();
immoId = context.getExternalContext().getSessionMap().get("id").toString();