我们正在gsp中显示文件。以下列方式从后端拉出文件:
查看
<table>
<tr>
<th>Attachment:
<td>
<g:each in="${lstAttachment}" var="nonOracleAttachmentItem">
<g:link id="${nonOracleAttachmentItem.Id}" action="nonOracleAttachment" params="[nonOracleAttachmentItemId: nonOracleAttachmentItem.Id,nonOracleAttachmentItemName: nonOracleAttachmentItem.Name]">${nonOracleAttachmentItem.Name}</g:link><br/>
</g:each>
</td>
</tr>
</table>
控制器
def show(){
def strAttachmentsName = null;
def boolAttachment = objChangeControl.Attachment__c
def strOrcAttachmentName = objChangeControl.Attachment_Name__c
if(strOrcAttachmentName !=null){
def lstOracleAttachment = salesforceService.getSObjectList(SFDC_ORG, "SELECT Id,Name from Attachment where ParentId='${idG}' AND Name='$strOrcAttachmentName'")
def lstAttachment = salesforceService.getSObjectList(SFDC_ORG, "SELECT Id,Name from Attachment where ParentId='${idG}' AND Name != '$strOrcAttachmentName'")
def oracleAttachmentId = lstOracleAttachment[0].Id
def oracleAttachmentName = lstOracleAttachment[0].Name
[oracleAttachmentId:oracleAttachmentId, oracleAttachmentName: oracleAttachmentName,lstAttachment:lstAttachment,grcInstance: objGRCChangeControl,updatedRAIInstance: objUpdatedRAI, strConfigurationOwner:strConfigurationOwner,strGRCStatusCustomSetting:strGRCStatusCustomSetting,sfUserName: session["${SFDC_ORG}UserName"],sfUserId:sfUserId]
}else{
def lstAttachment = salesforceService.getSObjectList(SFDC_ORG, "SELECT Id,Name from Attachment where ParentId='${idG}'")
[lstAttachment:lstAttachment,grcInstance: objGRCChangeControl,updatedRAIInstance: objUpdatedRAI, strConfigurationOwner:strConfigurationOwner,strGRCStatusCustomSetting:strGRCStatusCustomSetting,sfUserName: session["${SFDC_ORG}UserName"],sfUserId:sfUserId]
}
}
这一切都很好,除非表单中的字段未通过验证,我们需要保留所有字段值以及最初显示的文件。这里是catch块(在按下&#39; Submit&#39;按钮后调用的方法内),它显示错误并在验证错误之前呈现用户输入的值。我怎样才能渲染文件?
def submitGRCRecord(){
try{
......
}
catch (Exception e){
render(action:"show",model:[sfUserName: session["${SFDC_ORG}UserName"], sfUserId: session["${SFDC_ORG}UserId"],encodedId:encodedIdParam,grcInstance: getGRCRecord(),inputITGNumber:inputITGNumber,inputJustification:inputJustification,attmtChecked: 'true',lstAttachment:params['lstAttachment']])
}
答案 0 :(得分:0)
很抱歉,如果这是非常基本的信息,请参阅此用例和解决方案的摘要以供将来参考:
用户会收到一封电子邮件,其中包含指向需要提供特定信息的表单的链接/ URL。 URL始终采用以下格式: 例如。: https://testchain.tstrandomurl.com/Folder1/show?encodedId=qwerty12345 表单将显示数据库中记录的一些现有信息。记录id(唯一标识符)是从URL中的encodedId中提取的。现有的“信息”包括但不限于需要显示为可下载链接的一堆文件。
此外,表单还有几个字段,需要用户输入更改说明: - 长文本字段和其他相关附件: - 文件上载占位符。
更改说明有256个字符限制。可以多次访问同一记录,每次用户需要输入新的更改说明时,它将计入包含先前输入的总字符数限制。因此,当达到总字符数限制时,使用flash.message将标准错误消息发送回视图。此外,我们还有另一项检查,以针对数据库中的预先存在的文件交叉检查附加相关附件的文件名。
在表单输入验证后发送错误消息时,所有原始值(上载文件除外)都需要保留在表单中。
这是通过使用带有action,params和模型的链式方法实现的:chain(action:'show',params:[encodedId:encodedIdParam],model: [UserName: session["${ORG}UserName"], UserId: session["${ORG}UserId"] ,inputExplainChanges:inputExplainChanges])
使用链式方法调用'show'方法,该方法最初显示表单中的文件并通过模型保留用户输入:[..]问题已解决。