0

我将 Primefaces 3.4.2 与 JSF 2.0 一起使用

我在 JSF 页面的对话框弹出窗口中有以下内容。

<p:dialog header="Create New Request" style="font-weight:bold"
        widgetVar="newDialog" resizable="false" id="newDlg"
        showEffect="fade" hideEffect="fade" appendToBody="true"
        modal="true" position="center top" width="850" height="450">
        <p:panelGrid columns="2">
        <h:outputLabel value="Employee" for="employee" />
            <p:selectOneMenu id="employee" value="#{mymb.employee}" 
            converter="#{employeeConverter}">
         <f:selectItems value="#{mymb.employeeItems}" var="emp"
        itemLabel="#{emp.employeeName}" itemValue="#{emp.employeeNumber}"/>
       <p:ajax listener="#{mymb.loadDepartments}"  process="@this"/>
</p:selectOneMenu>

        </p:panelGrid>
        <p:separator />
            </p:dialog>

如果我使用appendToBody="true",则selectOneMenu Converter不会调用类,但如果我使用 ,appendToBody="false"则调用Converter类。

这可能是什么原因?appendToBody="false"使我的弹出对话框无法使用,无法使用鼠标导航。

我该如何解决这个问题?


如果您在PUT 方法支持页面中使用 PUT,您可以获得他们 PUT 的文件名$_SERVER['REQUEST_URI']

例如,如果我有接收 PHP 脚本

<?php
/* PUT data comes in on the stdin stream */
$request_body = @file_get_contents('php://input'); 

error_log("Received PUT,  filename: {$_SERVER['REQUEST_URI']}, " . strlen($request_body) . " bytes");
?>

当我发出 CURL 时:

curl -X PUT -T "localfile.txt" http://example.com/interesting/target/name.txt

我得到输出(在我的错误日志中)

Received PUT,  filename: interesting/target/name.txt, 4931 bytes

如果您问我如何找出源文件系统 (localfile.txt) 中文件的名称,我认为这不会被传递。

4

1 回答 1

1

删除appendToBody<h:form/>在您的对话框中放置一个(连同它的内容)。

的目的appendToBody="false"是确保您的对话框呈现在 HTML 输出的主体内(因此在 main 内<h:form/>)。

如果没有appendToBody="false",对话框可能最终会被附加到标记的末尾,<body/>因此,其中的任何内容都不会被执行。

添加<h:form/>到您的对话框可确保即使它在外部结束,<body/>它仍然能够提交到服务器

于 2013-02-22T21:08:45.540 回答