how can i set a row on Datamodel after crud?

UI Components for JSF
Post Reply
Rafael.Moreira
Posts: 9
Joined: 17 Oct 2013, 17:25

18 Jul 2014, 23:52

i would like to put the line in my view of datamodel with the corrente object inserted or edited.

My data model extends a lazydataModel.

for exemple:

Code: Select all

public class AreaLazyList extends LazyDataModel<Area> implements Serializable,
		SelectableDataModel<Area> {

	private static final long serialVersionUID = 1L;
	// Data Source for binding data to the DataTable
	private List<Area> areasLazy;

	private int rowCount;
	// Data Access Service for create read update delete operations

	private Areas areas;

	public AreaLazyList(Areas areas) {
		this.areas = areas;
	}

	public List<Area> load(int posicaoPrimeiraLinha, int maximoPorPagina,
			String ordernarPeloCampo, SortOrder ordernarAscOuDesc,
			Map<String, String> filtros) {

		String ordernacao = ordernarAscOuDesc.toString();

		if (SortOrder.UNSORTED.equals(ordernarAscOuDesc)) {
			ordernacao = SortOrder.ASCENDING.toString();
		}

		// with datatable pagination limits
		areasLazy = areas.buscaPorPaginacao(posicaoPrimeiraLinha,
				maximoPorPagina, ordernarPeloCampo, ordernacao, filtros);
		// total encontrado no banco de dados, caso o filtro esteja preenchido
		// dispara a consulta novamente
		if (getRowCount() <= 0 || (filtros != null && !filtros.isEmpty())) {
			setRowCount(areas.countAll(filtros));
		}

		// quantidade a ser exibida em cada página
		setPageSize(maximoPorPagina);

		return areasLazy;
	}

	@Override
	public Object getRowKey(Area area) {
		return area.getCodigo();
	}

	@Override
	public Area getRowData(String rowKey) {
		Integer id = Integer.valueOf(rowKey);

		for (Area area : areasLazy) {
			if (id.equals(area.getCodigo())) {
				return area;
			}
		}

		return null;
	}

	@Override
	public void setRowIndex(int rowIndex) {
		// solução para evitar ArithmeticException
		if (rowIndex == -1 || getPageSize() == 0) {
			super.setRowIndex(-1);
		} else
			super.setRowIndex(rowIndex % getPageSize());
	}

	@Override
	public void setRowCount(int rowCount) {
		this.rowCount = rowCount;
	}

	@Override
	public int getRowCount() {
		return this.rowCount;
	}

	public List<Area> getAreasLazy() {
		return areasLazy;
	}

	public Areas getAreas() {
		return areas;
	}

}

then i save:

Code: Select all

public void salvar() {
		try {
			cadastroAreaService.salvar(this.area);
			lazyAreas.setRowIndex(listaDeAreas.indexOf(area));
			limpar();

			FacesUtil.addInfoMessage("Área "
					+ FacesUtil.getMensagemI18n("salvo"));
		} catch (Exception e) {
			FacesUtil.addErrorMessage(e.getMessage());

		}
	}

my view:

Code: Select all

<p:toolbar>
					<p:toolbarGroup>
						<p:button value="#{msg.novo}" styleClass="botao-novo"
							outcome="/omc/areas/CadastroArea" icon="ui-icon-plusthick" />

						<p:commandButton value="#{msg.salvar}"
							action="#{cadastroAreasBean.salvar}" icon="ui-icon-disk"
							styleClass="botao-salvar" update="@form">

						</p:commandButton>
					</p:toolbarGroup>


				</p:toolbar>


				<p:panelGrid columns="2" styleClass="semBorda"
					columnClasses="rotulo, campo">

					<p:outputLabel value="#{msg.area} : *" for="area" />
					<p:inputText id="area" size="50" maxlength="50"
						style="text-transform: uppercase"
						value="#{cadastroAreasBean.area.descricao}" />

				</p:panelGrid>


				<p:dataTable id="areasTable" value="#{cadastroAreasBean.lazyModel}"
					var="area" style="margin-top: 20px;" rowKey="area.codigo" rowIndexVar="linha" 
					emptyMessage="#{msg.nenhuma_area}" paginatorPosition="bottom"
					selectionMode="single"
					selection="#{cadastroAreasBean.areaSelecionada}" rows="20"
					paginator="true"
					paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
					currentPageReportTemplate="(#{msg.pagina} {currentPage} #{msg.de} {totalPages}) - (#{msg.registro} {startRecord} #{msg.a} {endRecord}) - Total ({totalRecords} #{msg.registros})"
					paginatorAlwaysVisible="true" rowsPerPageTemplate="10, 20, 30"
					lazy="true">
JSF 2.0
Primefaces 3.5
CDI 1.1
JPA 4.2.3

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 29 guests