编辑1:
我有一个h:commandLink
:
<h:commandLink value=""
actionListener="#{controller.authenticateAccount}"
style="text-decoration: none;"
target="#{controller.userNameGiven ? '_parent' : '' }">
<img src="../images/Profile/authenticateCPButton.gif" border="0" style="padding-left: 2px;"/>
</h:commandLink>
现在controller.userNameGiven
是一个布尔字段,如果给出username,则设置为true,否则设置为false。h:commandLink
存在于iframe中,在此之前,target
被设置为_parent
,然后如果用户名存在,那么它将重定向到同一父窗口中的页面,但在其他情况下,iframe在父页面中呈现,这显然是一个错误。现在,在目标验证之后,重定向的页面在该iframe中打开,这是不希望看到的。我做错了什么?
Thanks and regards.
编辑1:
我已将target
更改为:
target="#{controller.target}"
地点:
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
和
if(this.userName != null && this.userName.trim().length()>0) {
target = "_parent";
FacesContext.getCurrentInstance().getExternalContext().redirect("./somepage");
} else {
target = "";
}
但是它仍然不工作,url somepage在iframe中打开。
将逻辑移动到bean方法中:
public class Controller
{
// ...
public boolean isUserNameGiven () { /* snip */ }
public String getFooTarget()
{
return this.isUserNameGiven() ? "_parent" : "";
}
// ...
}