Para Desenvolvedores

PostLoadProcessor em interface com id="add" do tipo type="lum_doui"

Estou com uma interface para adicionar do tipo lum_doui. Veja abaixo o service

<interface id="add" name="STR_ADD" type="lum_doui">	
	<styles>
		<style path="style/add.xsl" name="STR_ADD" id="add"/>
	</styles>
</interface>

no doui esta assim:

<interface id="addMyVacations">
	<sources>
		<source id="vacation">
			<fields>
				<field id="id" />
				<field id="userId" display="false" readOnly="false" />				
				<!-- campo que deveria aparecer na interface -->
				<field id="startdate" externalData="true" name="STR_START_DATE" display="true" />				
			</fields>			
			<postLoadProcessors>
				<postLoadProcessor className="br.com.empresa.service.DatePostLoadProcessor" />
			</postLoadProcessors>			
		</source>
	</sources>
	<controls>
		<control:lum_form>
			<control:lum_propertyPage renderRequiredValuesDescriptor="false" renderButtonsType="none">
				<control:lum_inputHidden id="id" sourceId="none"/>
				<control:lum_autoLayoutFields id="autoLayoutFields">
					<field id="description">
						<value>
							<control:lum_inputTextArea id="description" cols="4"></control:lum_inputTextArea>
						</value>
					</field>
				</control:lum_autoLayoutFields>						
				<control:lum_footer>
					<control:lum_requiredValuesDescriptor/>
					<control:lum_interfaceButtons  id="interfaceButtons">
						<control:lum_okButton id="send" text="STR_SEND" isPrimary="true">							
							<onClick type="processAction" processActionId="commit"/>
						</control:lum_okButton>
					</control:lum_interfaceButtons>
				</control:lum_footer>
			</control:lum_propertyPage>
		</control:lum_form>
	</controls>
	<processActions>		
		<processAction id="commit" type="tableAddData"></processAction>
	</processActions>
</interface>

Preciso que o field startdate apareça nessa interface usando o PostLoadProcessor, mas não aparece. Se eu colocar o field na interface que tenha uma lista, funciona. 

public class DatePostLoadProcessor implements IPostLoadProcessor {
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void processSource(SessionConfig sessionConfig, Source source, Node parametersNode, ITransaction transaction) throws PortalException {
        
		TabularSource<?> tabularSource = (TabularSource) source;

		List<String> userIds = new ArrayList();
		
		for (final ISourceData row : tabularSource.getData().getRows()) {
            final PrincipalDataType.Data userId = (PrincipalDataType.Data)row.get((Object)"userId");
            userIds.add(userId.getId());
        }
		
		final List<UserProfile> userProfiles = (List<UserProfile>)UserProfileDao.getUserProfilesByUserIds((List)userIds);
		
		for (final ISourceData row : tabularSource.getData().getRows()) {
            for (final UserProfile userProfile : userProfiles) {
                final PrincipalDataType.Data userId = (PrincipalDataType.Data)row.get((Object)"userId");
                if (userProfile.getId().equals(userId.getId())) {                    
	                
                    final Date dataInicioEmpresa = userProfile.getStartDate();
                    if ( dataInicioEmpresa == null ) {
                    	continue;
                    }

                    final Calendar dataInicio1 = Calendar.getInstance();
                    dataInicio1.setTime(dataInicioEmpresa);
                    
                    final Calendar currDateCalendar1 = Calendar.getInstance();
                    if (dataInicio1.get(2) == currDateCalendar1.get(2)) {
                        if (currDateCalendar1.get(5) >= dataInicio1.get(5)) {
                        	dataInicio1.set(1, currDateCalendar1.get(1) + 1);
                        }
                    }
                    else if (currDateCalendar1.get(2) > dataInicio1.get(2)) {
                    	dataInicio1.set(1, currDateCalendar1.get(1) + 1);
                    }
                    else {
                    	dataInicio1.set(1, currDateCalendar1.get(1));
                    }
                    
                    row.put((String)"startdate", (Object)((String)new DateConverter().convert((Class)String.class, (Object)dataInicio1.getTime())));
                    
                    break;
                }
            }
        }		
		
    }

}

Como fazer com que o campo "startdate" apareceça no XML?

Por Webmaster

Em 21/05/19 09:01

Acompanhar pergunta

1 resposta(s):

Ordenar por:

Webmaster,

O controle lum_autoLayoutFields por padrão exibe todos os campos com exibição habilitada, mas quando vc explicita algum <field> dentro dele, apenas os fields explicitados nele são exibidos. Vc pode adicionar o startdate nele como o exemplo abaixo:

                <control:lum_autoLayoutFields id="autoLayoutFields">
                    <field id="description">
                        <value>
                            <control:lum_inputTextArea id="description" cols="4"></control:lum_inputTextArea>
                        </value>
                    </field>
                    <field id="startdate"/>
                </control:lum_autoLayoutFields>                        

Por Rodrigo Cesar

Em 27/05/19 17:47

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.