Autor |
Mensagem |
|
Valeu!!!!
|
 |
|
O frameWork esta gerando tudo certo porem ele funciona somente para combo... eu precisava que os lists fizesse reload com varios itens selecionados e não com somente um como funciona hoje.
|
 |
|
Tem como eu alterar o funcionamento do comboReloadGroup pois eu alterei o combo para um list usando o multiple="true" e size="10"
Code:
<n:comboReloadGroup useAjax="true">
<t:property renderAs="doubleline" multiple="true" name="estrutura" size="10"/>
<t:property renderAs="doubleline" multiple="true" name="regua" label="Régua" size="10" />
</n:comboReloadGroup>
porem quando eu seleciono mais de um ele funciona somente para o ultimo que eu selecionei ....... tem como eu mudar a função interna para que ele filtre a subentidade de acordo com todos que eu selecionar na primeira lista????
|
 |
|
no arquivo TabelaResultadosTag.jsp colocar esse codigo
Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="n" uri="neo"%>
<%@ taglib prefix="combo" uri="combo"%>
<%@ taglib prefix="t" uri="template"%>
<script type="text/javascript">
function alteraClassOver(obj){
if (obj.className == 'dataGridBody1'){
obj.className = 'dataGridBody1MouseOver';
}else{
obj.className = 'dataGridBody2MouseOver';
}
}
function alteraClassOut(obj){
if (obj.className == 'dataGridBody1MouseOver'){
obj.className = 'dataGridBody1';
}
if (obj.className == 'dataGridBody2MouseOver'){
obj.className = 'dataGridBody2';
}
}
function editarRegistro(obj){
// recupera o ultimo TD
var td = obj.cells[obj.cells.length-1];
// recupera o caminho do segundo link o editar(o primeiro é o imprimir)
var href = td.childNodes[1].href;
// altera o caminho atual com o caminho do editar da linha atual.
window.location = href;
}
</script>
<n:dataGrid rowonclick="editarRegistro(this)" rowonmouseover="alteraClassOver(this)" rowOnMouseOut="alteraClassOut(this)" styleClass="dataGrid" itens="${TtabelaResultados.itens}" var="${TtabelaResultados.name}" width="100%" cellspacing="1">
<n:bean name="${TtabelaResultados.name}" valueType="${TtabelaResultados.valueType}">
<n:getContent tagName="acaoTag" vars="acoes">
<t:propertyConfig mode="output" renderAs="column">
<n:doBody />
</t:propertyConfig>
<c:if test="${(!empty acoes) || (TtabelaResultados.showEditarLink) || (TtabelaResultados.showExcluirLink) || (TtabelaResultados.showConsultarLink)}">
<n:column header="Ação" style="width: 1%; white-space: nowrap; padding-right: 3px;">
${acoes}
<script language="javascript">
imprimirSelecionar(new Array(${n:hierarchy(TtabelaResultados.valueType)}), "${n:escape(n:valueToString(n:reevaluate(TtabelaResultados.name, pageContext)))}", "${n:escape(n:descriptionToString(n:reevaluate(TtabelaResultados.name, pageContext)))}");
</script>
<c:if test="${TtabelaResultados.showConsultarLink}">
<n:link action="consultar" parameters="${n:idProperty(n:reevaluate(TtabelaResultados.name,pageContext))}=${n:id(n:reevaluate(TtabelaResultados.name,pageContext))}">consultar</n:link>
</c:if>
<c:if test="${TtabelaResultados.showEditarLink}">
<n:link action="editar" parameters="${n:idProperty(n:reevaluate(TtabelaResultados.name,pageContext))}=${n:id(n:reevaluate(TtabelaResultados.name,pageContext))}"></n:link>
</c:if>
<c:if test="${TtabelaResultados.showExcluirLink}">
<n:link confirmationMessage="Deseja realmente excluir esse registro?" action="excluir" parameters="${n:idProperty(n:reevaluate(TtabelaResultados.name,pageContext))}=${n:id(n:reevaluate(TtabelaResultados.name,pageContext))}">excluir</n:link>
</c:if>
</n:column>
</c:if>
</n:getContent>
</n:bean>
</n:dataGrid>
no codigo assim foram incluidas 3 metodos javaScript editarRegistro(this), alteraClassOver(this), alteraClassOut(this) para serem usados na tag TD de cada registro, para que esses metodos sejam acessados nos eventos onclick, onmouseOver e onMouseOut foi alterado a linha da tag <n:dataGrid> com o codigo :
Code:
<n:dataGrid rowonclick="editarRegistro(this)" rowonmouseover="alteraClassOver(this)" rowOnMouseOut="alteraClassOut(this)" styleClass="dataGrid" itens="${TtabelaResultados.itens}" var="${TtabelaResultados.name}" width="100%" cellspacing="1">
no default.css ou em outro que a pagina tenha acesso inserir esse codigo:
Code:
.dataGridBody1MouseOver {
background-color: #D3D3D3;
}
.dataGridBody2MouseOver {
background-color: #D3D3D3;
}
|
 |
|
Como faço para colocar o label em cima do propriedade dentro do formulario?? ?
|
 |
|
Funcionou, eu coloquei o seguinte codigo:
Code:
<script type="text/javascript">
function alteraClassOver(obj){
if (obj.className == 'dataGridBody1'){
obj.className = 'dataGridBody1MouseOver';
}else{
obj.className = 'dataGridBody2MouseOver';
}
}
function alteraClassOut(obj){
if (obj.className == 'dataGridBody1MouseOver'){
obj.className = 'dataGridBody1';
}
if (obj.className == 'dataGridBody2MouseOver'){
obj.className = 'dataGridBody2';
}
}
function editarRegistro(obj){
var td = obj.cells[obj.cells.length-1];
var id = td.childNodes[1].href;
window.location = td.childNodes[1].href;
}
</script>
<n:dataGrid rowonclick="editarRegistro(this)" rowonmouseover="alteraClassOver(this)" rowOnMouseOut="alteraClassOut(this)" styleClass="dataGrid" itens="${TtabelaResultados.itens}" var="${TtabelaResultados.name}" width="100%" cellspacing="1">
as primeiras duas funções são para alterar o class do TD para que ele mude de cor quando o mouse estiver sobre o registro e quando sair o class voltar ao original, a terceira função é para pegar o link para editar o registro atual.
|
 |
|
Como é que eu faço para pegar o endereço para editar o registro corrente da linha??? para alterar a forma de editar.
|
 |
|
Valeu!!!! Funcionou certinho!!!!
|
 |
|
Estou com um problema agora é na acentuação quando eu passo alguma string que tem acentuação ele mostra no Javascript a string toda desconfigurada, vc já viu isso???
|
 |
|
Valeu!!!!
|
 |
|
A questão é o seguinte eu fiz a seguinte classes:
Code:
package br.com.geoexplore.geoenterprise.geobarragem.ajax;
import java.io.IOException;
import br.com.linkcom.neo.controller.Controller;
import br.com.linkcom.neo.controller.MultiActionController;
import br.com.linkcom.neo.core.web.WebRequestContext;
...
@Controller(path="/geobarragem/AjaxNivelPiezometro")
public class NivelPiezometroAjaxController extends MultiActionController {
PiezometroService piezometroService;
public void setPiezometroService(PiezometroService piezometroService) {
this.piezometroService = piezometroService;
}
public void getCoordenadaZPiezometro(WebRequestContext request,Model modelo)throws IOException{
Piezometro piezometro = (Piezometro) modelo.getModelo();
String teste = piezometroService.load(piezometro).getBeanToJavaScript();
request.getServletResponse().getWriter().println(teste);
}
}
e na pagina eu coloquei esse codigo:
Code:
piezometro = new Object();
function executarAjax(){
if (document.getElementsByName("piezometro")[0].value != '<null>')
sendRequest('<%=request.getContextPath()%>/geobarragem/AjaxNivelPiezometro?modelo='+document.getElementsByName("piezometro")[0].value,'ACAO=getCoordenadaZPiezometro','POST', ajaxCallback, erroCallback);
}
function ajaxCallback(data){
eval(data);
calculaCotaNivelAgua();
}
function erroCallback(request){
alert('Erro no ajax!\n' + request.responseText);
}
Pelo que eu vi no exemplo que vc colocou em nenhum lugar nas tags vc colocou o caminho da classe. Se não tem que colocar o caminho em nenhum lugar onde esse metodo tem que estar??????
|
 |
|
Beleza... eu so respondi pois .... se alguem tentar usar o prototype vai dar esse problema..... mas valeu!!!!!
|
 |
|
Tem como vc mostar como eu posso usar esse <ajax:call.../> ???
|
 |
|
valeu!!!!
|
 |
|
Eu fizo seguinte criei um metodo no bean que é o pai de todo mundo:
Code:
@Transient
public String getBeanToJavaScript() throws IOException {
String retorno = "";
try{
String nomeBean = this.getClass().toString().substring(this.getClass().toString().lastIndexOf(".")+1).toLowerCase();
retorno += nomeBean + " = new Object();\n";
Class<? extends Object> classe = this.getClass();
while (classe != null){
retorno += montaScriptBean(nomeBean,classe);
classe = classe.getSuperclass();
}
}catch(Exception e){
throw new IOException(e.getMessage());
}
return retorno;
}
@Transient
private String montaScriptBean(String nomeBean,Class<? extends Object> classe) throws IllegalAccessException, InvocationTargetException {
List<Field> campos = Arrays.asList(classe.getDeclaredFields());
String camposStr = "";
for (Field field: campos){
try{
if (field.getName().indexOf("List")== -1){
String valor = BeanUtils.getProperty(this, field.getName());
if (field.getType().equals(String.class) ){
if (valor == null)valor = "";
camposStr += nomeBean+"."+field.getName()+" = '"+ valor + "';\n" ;
}else if (field.getType().equals(Double.class) ){
//if (valor != null)valor = valor.replace('.', ',');
camposStr += nomeBean+"."+field.getName()+" = "+ valor + ";\n" ;
}else if (field.getType().equals(Integer.class) ){
if (valor != null)valor = valor.replace('.', ',');
camposStr += nomeBean+"."+field.getName()+" = "+ valor + ";\n" ;
}else if (field.getType().equals(Date.class) ){
camposStr += nomeBean+"."+field.getName()+" = "+ valor + ";\n" ;
}
}
}catch(NoSuchMethodException e){}
}
return camposStr;
}
O retorno desse metodo é a segunte string:
Code:
piezometro = new Object();
piezometro.codigo = 'TESTE';
piezometro.descricao = 'TESTE';
piezometro.local = '11111111111111111111111111';
piezometro.tipo = 'A';
...[e todos os outros metodos]
No javaScript tem um metodo eval(str) que interpreta o esta na str como se fosse um codigo JavaScript.
Sendo assim no java script agora eu posso acessar tanto o codigo e a descrição sem ter que fazer dois metodos.
|
 |
|