[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Messages posted by: andredelorme  XML
Profile for andredelorme -> Messages posted by andredelorme [51] Go to Page: 1, 2, 3, 4 Next 
Author Message
Colocando na SESSION funcionou, o select pega de lá sim.
Não gosto muito da idéia de deixar uma lista inteira lá.

Quanto a criar um outro filtro, como o Validator é global, teria que criar outro filtro global, mas que seria útil somente para esse formulário. Um desperdício na minha opinião.

O filtro de validação não mantém o conteúdo do Output? Poderia?
Criei um formulário em JSP, para acessar essa página antes uma Action é executada que adiciona uma lista no OUTPUT para ser apresentada num campo select
Quando o formulário é enviado, este é validado por um filtro que foi feito implementando Validatable na mesma classe da Action, porém se algum erro for pego pelo Filtro, o usuário volta para o formulário, e a lista não é mais encontrada.

Como faço para colocar novamente as lista no Output?
Qual o melhor lugar?
Sergio,

Na verdade vi que precisava fazer um tratamento como:

if (innerAction != null && innerAction.equals("add"))

Obrigado, como fiquei um tempo afastado do Mentawai estava sem prática.
Estou criando uma action com diversas inner actions. Que resolver todas as necessidades CRUD (Create, Read, Update, and Delete) com uma única action. O problema está quando quero colocar também as validações na mesma classe.

A ação base (execute()) é usada apenas para obter os dados, logo não necessita de validação. Como posso fazer para que crie regras diferentes para cada inner action?

Para que serve e como deve ser usado o segundo parâmetro do método public void initValidator(Validator val, String innerAction)? Pensei que era usado para criar algo como:
if (innerAction.equals("add")) {
val.add("campo", new RequiredFieldRule(), FIELD_REQUIRED_ERROR);
}

Obrigado.
É possível que as mensagens de erro também fiquem no arquivo master_LOC.i18n?
Interessante, mas os tags de início e fim precisaríam ser alguma coisa mais incomum.
Não sei quem está responsável pelo processo de tradução no momento, mas o arquivo com os textos em inglês da página sendmail.jsp está com erro.

Pelo que percebi foi usada a barra normal (/) ao invés da barra invertida (\) nas quebras de linha.
Paulo,

Você quer criar uma combo com os possíveis generos?

Para isso no ApplicationManager adicione:
Code:
     public void loadLists() throws IOException {
         ListManager.init();
         
         DBListData generos = new DBListData(connHandler, "nome_tabela", "id", "nome_genero");
         ListManager.addList(generos);
 
     }
 


Além disso será necessário adicionar uma coluna chamada locale, e a PK deverá ser id+locale, com isso você irá incluir um registro para cada idioma.

Ajudei?
pauloperes,

Se você olhar o post:

http://forum.mentaframework.org/posts/list/79.page

Verá que criei duas tags customizadas para justamente atender a essa demanda. Se você olhar a parte para adicionar o parâmentro onchange na tag mtw:select é bem simples.

Espero que ajude.
pauloperes,

Para utilizar a classe DBListData, que criei, basta que sua tabela contenha um coluna para identificador (PK) e outra com a descrição. O nome desses campos serão passados para a classe, assim como o nome da tabela.
Além disso, é preciso que na tabela exista um compo de nome locale, que será utilizado para a internacionalização.

Entendeu?

Analise o código que postei aqui que não nada complicado, e pode até ser melhorado.
Sergio,

Algumas considerações sobre as páginas que fiz

Criei uma chave title de modo que cada página tenha seu título correspondente, ao invés de Mentawai Overview em todas.

Removi os tags <a name=””></a>

A mensagem de Copyright não está em uma chave.

hibernatefilter.jsp

Não pude usar a chave author_email, já que o autor é o Rubem.

i18n.jsp

Refiz o HTML da seqüência de busca das chaves em arquivos JSP, pois da forma que estava, a largura da página não era respeitada.

innerfilter.jsp

Há um bloco de código HTML comentado que não sabia se podia removê-lo:
Code:
 <!-- p>
     When you call the URL <i>/HelloInnerActions.sayBye.mtw</i>, the rule for choosing an action config is:
     First check for an inner action config. If not found, check for the regular action config.
     </p>
 	<p>
     You are not required to define consequences for an inner action.
     If a consequence for the inner action is not found, the consequence for the regular action (<i>execute()</i> method) is chosen instead.
     The rule for choosing consequences are illustrated below:
     <ul>
     <li> <i>Inner Actions</i>: Check for a consequence from the inner action.
          If it is not found, check for a consequence from the regular action (no inner action).
          If it is not found, check for a global consequence.</li><br><br>
     <li> <i>Regular Actions</i>: Check for a consequence from the regular action (no inner action).
          If it is not found, check for a global consequence.</li><br><br>
     </ul -->
 
Exato, se vamos traduzir ou não pode ser discutido posteriormente, só acho que já devemos criar um chave para esta mensagem.
Me refiro a mensagem: Copyright © 2005
Em portugês deve mudar para algo como "Direitos reservados..."

Já retirei os tags <a name=""> e aquele bloco de código comentado.

Testei aqui, vou seguir com as outras páginas que peguei. No final mando todos os arquivos alterados.
Sergio,

Verifique se a página Filters está correta para que possa continuar.

Faço também algumas considerações:

index.jsp
O texto “Mentawai Web Framework - Mentawai Overview” que compõe o título da página não deveria estar numa chave? Ou pelo menos “Mentawai Overview”, que foi o que coloquei na filters.jsp, pois hoje todas as páginas do site estão com o TITLE de Overview.

“News” também não deveria estar numa chave? E mais por que temos o código <a name="Overview"></a><h3> antes dele? Assim como <a name="Architecture"></a>

A mensagem de Copyright não deveria estar numa chave também?

filters.jsp
O código comentado abaixo precisa ser mantido?
<!-- div id="banner">
<a href="http://maven.apache.org/reference/plugins/examples/" id="projectLogo">
<img alt="Mentawai Web Framework" src="http://www.lohis.com.br/images/mentawai/logo.png"></img></a>
<div class="clear"><hr></hr></div></div -->
<!-- div id="breadcrumbs"><div class="xleft"></div><div class="xright"></div><div class="clear">
<hr></hr>
</div></div -->

Precisamos realmente dos tags <a name=””></a>?


Só para confirmar os códigos exemplos não serão traduzidos, certo?

Aguardo um retorno sobre o filters.jsp para que possa continuar o processo.
Sergio,

Consegui algo, criei uma TAG chamada <user:loopFields></user:loopFields>

Code:
 public class LoopFields extends LoopTag {
     
     private int count;
     private String counterField;
     
     public void setCounterField(String counterField) {
         this.counterField = counterField;
     }
     
     public boolean loopCondition() throws javax.servlet.jsp.JspException {
         return count-- > 0;
     }
     
     public void init() throws javax.servlet.jsp.JspException {
         Action action = (Action) request.getAttribute(Forward.ACTION_REQUEST);
         Input input = action.getInput();
         count = input.getIntValue(counterField);
         
     }
     
 }
 


TLD:
Code:
 <tag>
   <name>loopFields</name>
   <tag-class>andredelorme.caprev.tags.LoopFields</tag-class>
   <body-content>JSP</body-content>
   <display-name></display-name>
   <attribute>
     <name>counterField</name>
     <required>true</required>
     <rtexprvalue>true</rtexprvalue>
     <type>java.lang.String</type>
   </attribute>
 </tag>
 


Para utilizá-la, no meu JSP coloquei:
Code:
 <input type="button" value="Adicionar" onclick="this.form.action='enderecoAdd.mtw';this.form.submit();">
 
 <mtw:input type="hidden" name="enderecoCount" />
 <% int i = 0; %>
 <user:loopFields counterField="enderecoCount">
 Endereço: <%= ++i  %>
 <input type="button" value="Remover" onclick="this.form.action='enderecoDel.mtw?i=<%= i %>';this.form.submit();">
 
 Logradouro: <mtw:input type="text" name="<%= "logradouro_" + i %>" maxlength="100" size="50" />
 <br>
 Bairro: <mtw:input type="text" name="<%= "bairro_" + i %>" maxlength="50" size="30" />
 …
 
 </user:loopFields>
 


Action para adicionar um endereço:
Code:
 public class EnderecoAdd extends BaseAction implements org.mentawai.filter.AuthenticationFree {
     
     public String execute() throws org.mentawai.core.ActionException {
         int counter = 0;
         counter = input.getIntValue("enderecoCount");
         counter++;
         input.setValue("enderecoCount", new Integer(counter));
         return SUCCESS;
     }
     
 }
 


Action para remover um endereço:
Code:
 public class EnderecoDel extends BaseAction implements org.mentawai.filter.AuthenticationFree {
     
     public String execute() throws org.mentawai.core.ActionException {
         int counter = 0;
         int toRemove = 0;
         counter = input.getIntValue("enderecoCount");
         toRemove = input.getIntValue("i");
         for (int i = 1; i <= counter-1; i++) {
             if (i >= toRemove) {
                 input.setValue("logradouro_" + i, input.getValue("logradouro_" + (i+1)));
                 input.setValue("bairro_" + i, input.getValue("bairro_" + (i+1)));
                 //...
             }
         }
         counter--;
         input.setValue("enderecoCount", new Integer(counter));
         return SUCCESS;
     }
     
 }
 


Bom, é isso. O que achou?

Você sabe se tem uma maneira de colocar o contador sem criar a variável i no JSP?

Outro problema é que não posso utilizar o filtro de validação, pois ele é inicializado com a quantidade de campos fixa, acho que terei de fazer a validação diretamente na Action.
 
Profile for andredelorme -> Messages posted by andredelorme [51] Go to Page: 1, 2, 3, 4 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team