| 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.
|
 |
|
|