0

我有一个绑定到文档数据源的页面。页面顶部是一个面板,其中设置了文档的字段。页面底部是文档的视图。

假设字段是 [A] 和 [B],并且 [B] 的值取决于 [A],它会在某些值更改时部分刷新 [B]。当我只是设置不触发部分刷新的 [A] 然后按提交/保存时,文档被保存并且页面完全更新并且文档出现在下面的视图中。

但是,如果我设置 [A] 以使 [B] 刷新然后按提交/保存,则文档将被保存,但文档不会出现在视图中。我需要通过在 URL 栏中按 ENTER 以更新视图来重新加载页面。试图对此进行研究,但无济于事。

你认为我可以做些什么来更新最后一个场景的视图?

这是简化的代码:

<?xml 版本="1.0" 编码="UTF-8"?>
<xp:查看 xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"
   style="font-size:11pt;font-weight:bold">

    <xp:this.beforePageLoad>
        <![CDATA[#{javascript:var currLocation=context.getUrl();
var webDBPath=@LeftBack(currLocation,"/");
sessionScope.jQuery=webDBPath+"/jquery.min.js";
sessionScope.jQueryUI=webDBPath+"/jquery-ui.min.js";
sessionScope.jQueryBlockUI=webDBPath+"/jquery.blockUI.js"}]]>
    </xp:this.beforePageLoad>

    <xp:this.data>

        <xp:dominoDocument var="attachmentDoc" formName="Attachment"></xp:dominoDocument>
    </xp:this.data>

    <xp:this.resources>
        <xp:script src="#{javascript:sessionScope.jQuery}"
         客户端="真">
        </xp:脚本>
        <xp:script src="#{javascript:sessionScope.jQueryUI}"
         客户端="真">
        </xp:脚本>
        <xp:script src="#{javascript:sessionScope.jQueryBlockUI}"
         客户端="真">
        </xp:脚本>
        <xp:script src="/home.js" clientSide="true"></xp:script>
        <xp:styleSheet href="/style.css"></xp:styleSheet>
        <xp:styleSheet href="/jquery-ui.css"></xp:styleSheet>
        <xp:script src="/utils.jss" clientSide="false"></xp:script>
    </xp:this.resources>

    <xp:span style="font-weight:bold;font-size:11pt"></xp:span>
    <xp:span style="font-size:14pt"></xp:span>
    <xp:span style="font-weight:bold;font-size:11pt"></xp:span>
    <xp:inputText id="reUploadAttachmentID" style="display: none;"
      styleClass="reUploadAttachmentID"></xp:inputText>
    <xp:br style="font-size:11pt"></xp:br>
    <xp:panel style="margin-left:auto;margin-right:auto;width:940.0px"
      id="mainPanel">

        <xp:span style="font-size:14pt"></xp:span>
        <xp:span style="font-size:14pt"></xp:span>
        <xp:br style="font-weight:bold"></xp:br>
        <xp:br></xp:br>
        <xp:inputText id="errorMessage" value="#{requestScope.errorMessage}"
         styleClass="errorMessage"></xp:inputText>

        <xp:span style="font-weight:bold"></xp:span>
        <xp:span style="font-weight:bold">
            <xp:span style="font-weight:bold"></xp:span>
        </xp:span>
        <xp:br></xp:br>
        <xp:panel styleClass="upload-details-panel">
            <xp:span>上传:</xp:span>
            <xp:fileUpload id="fileUpload1" value="#{attachmentDoc.Attachment}"></xp:fileUpload>
        </xp:面板>
        <xp:panel styleClass="upload-details-panel">
            <span>类型:</span>
            <xp:comboBox id="cbUploadType" value="#{attachmentDoc.File_Type}"
            styleClass="cbUploadType">
                <xp:selectItem itemLabel="Attachment"></xp:selectItem>
                <xp:selectItem itemLabel="eCR 主文件"></xp:selectItem>

                <xp:selectItem itemLabel="财务分析"></xp:selectItem>
                <xp:eventHandler event="onchange" 提交="true"
               refreshMode="partial" refreshId="panelUploadDetails">
                </xp:eventHandler>
            </xp:comboBox>
        </xp:面板>

        <xp:panel id="panelUploadDetails">
            <xp:panel styleClass="upload-details-panel">
                <xp:this.rendered><![CDATA[#{javascript:var uploadType = getComponent("cbUploadType").getValue();
if(uploadType == "附件" || uploadType == null){
    返回假;
}
return true;}]]></xp:this.rendered>
                <span>部门:</span>
                <xp:comboBox id="comboBox1" value="#{attachmentDoc.File_Database}"
               styleClass="cbUploadDatabase">
                    <xp:selectItems>
                        <xp:this.value><![CDATA[#{javascript:var options = ["---"];
return options.concat(@Unique(@DbColumn("", "eCR 数据库设置", 1)));}]]></xp:this.value>
                    </xp:selectItems>
                    <xp:eventHandler event="onchange" 提交="true"
                  refreshMode="部分"
                  refreshId='#{javascript:var uploadType = getComponent("cbUploadType").getValue();
if(uploadType == "财务分析"){
    返回“面板FAType”;
}
返回“panelExtra”;
}'>

                    </xp:eventHandler>

                </xp:comboBox>

            </xp:面板>
            <xp:panel id="panelExtra">
                <!--
               这只是用于重定向 Division 的部分刷新
               非 FA 的选择
            -->
            </xp:面板>
            <xp:panel styleClass="upload-details-panel" id="panelFAType">

                <xp:this.rendered><![CDATA[#{javascript:var uploadType = getComponent("cbUploadType").getValue();
if(uploadType == "财务分析"){
    返回真;
}
return false;}]]></xp:this.rendered>
                <span>财务分析类型:</span>
                <xp:comboBox id="comboBoxFAType" value="#{attachmentDoc.FAType}">
                    <xp:selectItems>
                        <xp:this.value><![CDATA[#{javascript:var 除法 = getComponent("comboBox1").getValue();
如果(除法!= null){
    返回 getFATypeOptions(getComponent("comboBox1").getValue());
}
return "---";}]]></xp:this.value>
                    </xp:selectItems>
                </xp:comboBox>
            </xp:面板>
        </xp:面板>
        <xp:panel styleClass="upload-details-panel">
            <span></span>
            <xp:button id="btnUpload" value="Upload" styleClass="btnUpload"
            样式=“高度:26.0px”>
                <xp:eventHandler event="onclick" 提交="true"
               refreshMode="complete" immediate="false" save="true">
                    <xp:this.action><![CDATA[#{javascript:
var fileData:com.ibm.xsp.http.UploadedFile = facesContext.getExternalContext().getRequest().getParameterMap().get(getClientId('fileUpload1'));

var db:NotesDatabase = session.getCurrentDatabase();

var agent = database.getAgent("导入数据到文档");

//var attDoc:NotesDocument = attachmentDoc.getDocument();
//var doc:NotesDocument = db.createDocument();
var doc:NotesDocument = attachmentDoc.getDocument();
var settingsDoc:NotesDocument = db.getProfileDocument("eCRFilesDBConfiguration", "");

var 存储库路径:字符串;

如果(文件数据!= null){
   //doc.replaceItemValue('Form', 'Attachment');
   doc.computeWithForm(true, false);

    var clientFileName:String = fileData.getClientFileName();           
    var newFile:java.io.File = new java.io.File(fileData.getServerFileName());
    var filePath:string = doc.getItemValueString("File_Path");

    doc.replaceItemValue('File_Name', clientFileName);

    // 获取文件扩展名    
    变种扩展名:字符串='';
    var newFileName:string = '';
    变量我:int;

   i = clientFileName.lastIndexOf('.');
   如果 (i > 0) {
       扩展 = clientFileName.substring(i+1);
   }  

   doc.replaceItemValue('File_Extension', extension);    
    newFileName = doc.getUniversalID() + '.' + 扩展;

   //var savedFile:java.io.File = new java.io.File('C:\\' + newFileName);
    //var savedFile:java.io.File = new java.io.File('C:\\' + clientFileName);

    repositoryPath = settingsDoc.getItemValueString("FileRepositoryPath")
    var savedFile:java.io.File = new java.io.File(repositoryPath + newFileName);

    newFile.renameTo(savedFile);

    doc.replaceItemValue("File_Size", savedFile.length())
    doc.replaceItemValue("Processed_eCR_Template", "");

    // 保存新文件
    if (savedFile.exists()) {
      // 这用于保留附件的图标/外观
      // 在文档中      
      //doc.replaceItemValue('Attachment', attDoc.getItemValue('Attachment'));

      doc.save();
    } 别的 {
      //requestScope.errorMessage = '找不到服务器文件';
      print('找不到服务器文件');
    }
} 别的 {
   requestScope.errorMessage = '没有找到文件';
   print('没有找到文件');
}

// 此代码防止用户刷新时重新提交上传的文件
// 这页纸
// var curURL = window.location.href;
// var NSFURL = curURL.toLowerCase().split('.nsf')[0] + '.nsf';


// window.location.href = NSFURL}]]></xp:this.action>
                    <xp:this.script><![CDATA[//提交前验证字段

var uploadType = document.getElementById("#{id:cbUploadType}").value;
if(uploadType == "附件"){
    返回真;
}别的{
    var 除法 = document.getElementById("#{id:comboBox1}").value;
    如果(除法==“---”){
        alert("请注明部门。");
        返回假;
    }
    if(uploadType == "eCR 主文件"){
        返回真;
    }else if(uploadType == "财务分析"){
        var faType = document.getElementById("#{id:comboBoxFAType}").value;
        if(faType == "---"){
            alert("请指定财务分析类型。");
            返回假;
        }别的{
            返回真;
        }
    }
}

//如果上传类型未被识别
alert("无法识别上传类型,请联系管理员。");
返回假;

]]></xp:this.script>
                </xp:eventHandler>
            </xp:按钮>

        </xp:面板>
        <xp:panel id="panelUploadedFiles">

            <xp:viewPanel rows="30" id="viewPanel1" viewStyle="width:100%">
                <xp:this.facets>
                    <xp:pager partialRefresh="true" layout="上一个组下一个"
                  xp:key="headerPager" id="pager1">
                    </xp:pager>
                </xp:this.facets>
                <xp:this.data>
                    <xp:dominoView var="view1" viewName="Web 附件"
                  keys="#{javascript:@UserName()}" categoryFilter="File_Owner">
                    </xp:dominoView>
                </xp:this.data>

                <xp:viewColumn columnName="File_Name" id="viewColumn2">
                    <xp:viewColumnHeader value="文件名"
                  id="viewColumnHeader2">
                    </xp:viewColumnHeader>
                </xp:viewColumn>
                <xp:viewColumn columnName="Date_Uploaded" id="viewColumn3">
                    <xp:viewColumnHeader value="上传日期"
                  id="viewColumnHeader3">
                    </xp:viewColumnHeader>
                </xp:viewColumn>
                <xp:viewColumn columnName="Last_Attached" id="viewColumn4">
                    <xp:viewColumnHeader value="最后附加"
                  id="viewColumnHeader4">
                    </xp:viewColumnHeader>
                </xp:viewColumn>
            </xp:viewPanel>
        </xp:面板>
    </xp:面板>
    <xp:br></xp:br>
</xp:view>

触发部分刷新的元素是组合框(onchange)。保存按钮是“上传”按钮。面板 panelUploadedFiles 包含视图。

4

1 回答 1

2

您需要发布示例代码,因为无法从最初的问题中诊断出您的问题。

我建议参加“ XPages MasterClass ”培训。大概是四个小时左右。它将向您展示如何使用XPages Toolbox,您可以使用它来调试这些类型的问题。

于 2013-09-04T14:14:52.233 回答