Xpages - Conflito é criado sempre que um documento é salvo
-
21-12-2019 - |
Pergunta
Eu tenho uma xpage, com vários separadores.O primeiro separador contém um painel, cujo conteúdo são editáveis apenas quando isNewNote() é verdadeira.Então eu calculado atributo só de leitura para o painel.
Mas toda vez que eu salve o documento, é a criação de um novo conflito documento.
No sametime,se eu desmarcar a propriedade só de leitura, ela está salvando corretamente, sem qualquer conflito.
Alguém pode me ajudar a resolver este problema?
CÓDIGO - Xpage
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="document1"
formName="frmOnboardingRequest">
</xp:dominoDocument>
</xp:this.data>
<xp:panel>
<xp:this.readonly><![CDATA[#{javascript:if(document1.isNewNote()){
return false;
}else{
return true;
}}]]></xp:this.readonly>
<xp:table>
<xp:tr>
<xp:td>
<xp:label value="O n_ e d_ form completed by:"
id="oN_ED_FormCompletedBy_Label1" for="oN_ED_FormCompletedBy1">
</xp:label>
</xp:td>
<xp:td>
<xp:inputText
value="#{document1.ON_ED_EmployeeName}"
id="oN_ED_FormCompletedBy1">
</xp:inputText>
</xp:td>
</xp:tr>
</xp:table></xp:panel>
<xp:button value="Submit" id="button1"><xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" save="true"></xp:eventHandler></xp:button></xp:view>
Solução
Verifique múltiplas fontes de dados apontando para o mesmo documento.
Alguns posts antes com o mesmo problema xpage cria conflito de salvamento em salvar/enviar
Várias fontes de dados em XPages
=================================================
Editar
Eu tive que alterar o código do botão para obter o mesmo problema
<xp:button value="Submit" id="button1"><xp:eventHandler event="onclick" refreshMode="complete" submit="true">
<xp:this.action>
<xp:saveDocument></xp:saveDocument>
</xp:this.action></xp:eventHandler></xp:button>
Depois de mais alguns testes, tente este.
Adicione esse campo para a final da xpage
<xp:inputText id="inputText1"
value="#{document1.temp}"
style="visibility:hidden;display:none">
</xp:inputText>
Em seguida, sem conflitos são criados.
Outras dicas
Estranho mesmo - mas também não.Sua fonte de dados está vinculada à página e não ao painel.Portanto, se você deseja definir o modo de leitura apenas para esse painel, considere calcular a fonte de dados do painel a partir da fonte de dados da página:
<xp:panel>
<xp:this.data>
<xp:dominoDocument var="document1" action="openDocument"></xp:dominoDocument>
</xp:this.data>
</xp:panel>
Claro que você tem que calcular o modo do documento e o docid em vez de usar a propriedade readonly.
Além das outras sugestões, ao trabalhar com tabelas com guias, você deverá seguir esta postagem do blog com atenção.Passei por problemas semelhantes em um projeto anterior e o redirectToCurrentDocument() de Tommy Valand os corrigiu.
http://dontpanic82.blogspot.com/2010/06/xpages-avoid- saving-duplicate-documents.html