2011-12-02 142 views
0

如果我在JSF页面上创建弹出框,我需要使用自定义组件。 它似乎使用CSS隐藏和显示的DHTML技术,并在当前页面上创建叠加层,而不是合适的窗口。使用自定义组件在JSF中创建弹出框

在我的情况下,它显示一个由servlet提供的图像。

我尝试了几件事情,结果如下: 1)如果我使用<h:commandButton action="bean.displayImage" onclick="mypopup.show()">弹出窗口和图像显示,然后消失,因为commandButton刷新页面。

2)如果我改变命令按钮的类型在行动领域“按钮”,然后bean.displayImage不会被调用,也不是应该服务于图像

3)我也试图把bean.displayImage该servlet在actionListener字段中,并通过添加ActionEvent e作为参数来修改该方法,以防止页面刷新,但它具有与2)

我用完了想法,任何人都可以帮忙吗?

由于提前, 迈克尔

+0

什么的'#{bean.displayImage}'的目的是什么?究竟是什么在视图方面无法完成? – BalusC

+0

它的一个控制器(请求作用域),它获取一个binary64图像并将其放入会话图。然后servlet使用它来呈现jpg图像。 在视图中,我显示servlet – Themikebe

+0

那么,我的答案仍然适用。 – BalusC

回答

0

的功能要求并不完全清楚,但你可以使用<f:ajax>使它一个Ajax请求,而不是呈现网页的某些部分。

喜欢的东西:

<h:commandButton value="Show popup" onclick="mypopup.show()"> 
    <f:ajax listener="#{bean.displayImage}" render="image" /> 
</h:commandButton> 
<h:panelGroup id="image"> 
    <h:graphicImage value="imageURL" rendered="#{bean.renderImage}" /> 
</h:panelGroup>