Para Desenvolvedores

XML renderizando tipo DATE com um dia a menos do banco

Resolvido

Temos uma tabela PESSOA com os campos dos dados é um dos campos é "dataNascimento", mas usamos uma VIEW para fazer na interface de LISTA, veja abaixo a view

SELECT 
	u.*, p.*, p.daNascimento	
FROM lum_User u 
	left outer join pessoa p on u.userId = p.id;

No meu douidefinition.xml, ele está assim, veja abaixo

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Revision: 209 $ $Date: 2017-02-09 16:41:32 -0200 (Qui, 09 fev 2017) $ -->
<doui:douiDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:doui="http://www.lumis.com.br/lumisportal/xsd/doui" xmlns:control="http://www.lumis.com.br/douicontrols">
	<service>
		<sources>
			
			<source id="pessoaView" type="view">
				<view>
					(
						SELECT 
							u.*, p.*, p.daNascimento	
						FROM lum_User u 
							left outer join pessoa p on u.userId = p.id;
					)
				</view>
				<fields>
					<field id="userId" display="false" name="STR_ID" dataType="string" isPrimaryKey="true"/>
					<field id="nome" name="STR_NAME" dataType="string" isPrimaryName="true" readOnly="true" isSearchable="true"/>										
					<field id="daNascimento" name="STR_START_DATE" dataType="date" />
				</fields>
			</source>			
			
			<source id="default" type="table">
				<table>pessoa</table>
				<fields>
					<field id="id" display="false" name="STR_ID" dataType="guid" isPrimaryKey="true"/>					
					<field id="daNascimento" name="STR_BIRTHDAY" dataType="date" />
				</fields>
			</source>
			
		</sources>
	</service>
	
	<interfaces>
		
		<interface id="list">
			<sources>
				<source id="pessoaView">
					<fields inherit="all"></fields>
				</source>
			</sources>
		</interface>
		
	</interfaces>
</doui:douiDefinition>

Na interface de editar o perfil da pessoa, ela escolhe a data que nasceu, tipo 05/04/1980, é salvo no banco corretamente, mas no XML a data trás com um dia a menos, tipo 04/04/1980. Veja o XML que o lumis monta.

<renderData>
	<controls>
		<control id="autoLayout" type="lum_autoLayoutList">
			<control id="lum_form" type="lum_form">				
				<control dataId="userId" id="list" type="lum_list">
					<control hasVisibleFilters="false" hideFilterButton="true" id="list.filters" sourceId="pessoaView" type="lum_filters">
						<strings>
							<string id="STR_FILTER_LIST">Filtrar</string>
							<string id="STR_REMOVE_FILTER">Remover filtro</string>
							<string id="STR_FILTERS_APPLIED">Filtros aplicados</string>
						</strings>
					</control>
					<control id="list.maxRows" sourceId="none" trim="true" type="lum_inputHidden">
						<setSourceParameter parameterName="doui_maxRows" sourceId="pessoaView"></setSourceParameter>
					</control>
					<control dataId="userId" id="list.tabulardata" sourceId="pessoaView" type="lum_tabularData">
						<strings>
							<string id="STR_ORDER_DESC">Ordenar descendente</string>
							<string id="STR_ORDER">Ordenar por</string>
							<string id="STR_ORDER_ASC">Ordenar ascendente</string>
						</strings>
						<fields>
							<field dataType="string" display="false" id="userId" includeAlways="true" isPrimaryKey="true" name="ID"></field>
							<field dataType="string" id="nome" isPrimaryName="true" isSearchable="true" name="Nome" readOnly="true"></field>
							<field dataType="guid" id="id" name="ID"></field>
							<field dataType="string" id="login" isSearchable="true" name="Login"></field>							
							<field dataType="date" getData="true" id="dataNascimento" name="Data de nascimento"></field>							
						</fields>
						<data>
							<formName>Form_8A8A81C269D9442C0169DFD5A2F57C31</formName>							
							<row primaryKey="8A8A81C269B4FEB10169BB7CE4A2640B">
								<userId>8A8A81C269B4FEB10169BB7CE4A2640B</userId>
								<nome>Sarah</nome>
								<id>8A8A81C269B4FEB10169BB7CE4A2640B</id>
								<login>sarah</login>								
								<dataNascimento lumIsComplexType="true">
									<value>04/04/80</value>
									<year>1980</year>
									<month>04</month>
									<monthName>Abril</monthName>
									<dayOfMonth>04</dayOfMonth>
									<dayOfWeek>6</dayOfWeek>
									<dayOfWeekName>Sexta-feira</dayOfWeekName>
								</dataNascimento>								
							</row>							
						</data>
					</control>
					<control id="list.pagination" sourceId="pessoaView" type="lum_pagination">
						<strings>
							<string id="STR_PAGES">Páginas</string>
							<string id="STR_NEXT_PAGE">Próxima página</string>
							<string id="STR_PREVIOUS_BLOCK">Retroceder bloco de páginas</string>
							<string id="STR_PAGE">Página</string>
							<string id="STR_PREVIOUS_PAGE">Página anterior</string>
							<string id="STR_LAST_PAGE">Última página</string>
							<string id="STR_NEXT_BLOCK">Avançar bloco de páginas</string>
							<string id="STR_FIRST_PAGE">Primeira página</string>
							<string id="STR_OF">de</string>
						</strings>
						<data>
							<totalRows>11</totalRows>
							<startRow>1</startRow>
							<endRow>11</endRow>
							<currentPage>1</currentPage>
							<totalPages>1</totalPages>
						</data>
					</control>
				</control>
				<data>
					<name>Form_8A8A81C269D9442C0169DFD5A2F57C31</name>
					<method>post</method>
					<action>main.jsp?lumPageId=8A8A81C269D9442C0169DFD583947B07&amp;lumA=1&amp;lumII=8A8A81C269D9442C0169DFD5A2F57C31</action>
				</data>
			</control>
		</control>
		<control id="lum_errorSummary" show="popup" sourceId="none" type="lum_errorSummary">
			<data>
				<messageControlId>es8A8A81C269D9442C0169DFD5A2F57C31_Form_8A8A81C269D9442C0169DFD5A2F57C31_lum_errorSummary</messageControlId>
			</data>
		</control>
	</controls>
	
</renderData>

Como pode observar, o retorno do select trás a data corretamente "05/04/1980", mas o XML trás a data errada "04/04/1980".

Por Webmaster

Em 03/04/19 07:09

Acompanhar pergunta

2 resposta(s):

Ordenar por:

Pode ser problema de timezone.
Veja qual timezone seu banco está usando e compare com o timezone da JVM do portal.

Att.

Por Thiago Berne

Em 03/04/19 10:02

Valeu Thiago,

Era isso mesmo.

Por Webmaster

Em 03/04/19 11:52

Entrar

Interaja com a comunidade e tenha acesso a conteúdos exclusivos.

Houve algum erro ao acessar o banco de dados. Tente novamente mais tarde.