I don't see anything obviously lwrong. Can you step through the code (or add 
some debug output) to verify that the flag-setting code is actually being 
called when you expect it to be?

On Dec 22, 2010, at 5:26 AM, Luiz Gustavo wrote:

> Hi Greg,
> 
> 
> These are the fragments involved:
> 
> 
> bxml
> ...
> <Form.Section>
>                         
>                             <TextInput Form.label="%lblDescricao" 
> textSize="40" bxml:id="descricao"/>
>                             
>                             <BoxPane styles="{verticalAlignment:'center'}" 
> Form.label="%lblValor">
>                                 <TextInput textSize="10" bxml:id="valor" />
>                                 <Checkbox buttonData="%lblConciliado" 
> bxml:id="conciliado"
>                                     
> ButtonPressListener.buttonPressed="conciliadoImg.setVisible(conciliado.isSelected());"/>
>                                 <ImageView bxml:id="conciliadoImg" 
> image="@conciliado.png" visible="false"/>
>                             </BoxPane>
>                             
>                             <CalendarButton bxml:id="data" 
> Form.label="%lblData"/>
>                                           
>                             <BoxPane Form.label="%lblTipo" 
> orientation="horizontal" styles="{padding:4}">                    
>                            
>                                 <bxml:define>
>                                     <ButtonGroup bxml:id="tipos"/>
>                                 </bxml:define>
>                                 <RadioButton bxml:id="despesaButton" 
> buttonGroup="$tipos" selected="true">
>                                     <content:ButtonData icon="@despesa.png" 
> text="%lblDespesa"/>
>                                 </RadioButton>
>                                 <RadioButton bxml:id="receitaButton" 
> buttonGroup="$tipos">
>                                     <content:ButtonData icon="@receita.png" 
> text="%lblReceita"/>
>                                 </RadioButton>
>                                 
>                             </BoxPane>
>                             
>                             <ListButton bxml:id="categoria" 
> Form.label="%lblCategoria" />
>                             
>                             <BoxPane Form.label="%lblObservacoes">
>                                 <Border styles="{color:10}">
>                                     <ScrollPane 
> horizontalScrollBarPolicy="fill"
>                                         
> verticalScrollBarPolicy="fill_to_capacity"
>                                         preferredHeight="200" 
> preferredWidth="500">
>                                         <TextArea bxml:id="observacoes"/>
>                                     </ScrollPane>
>                                 </Border>
>                             </BoxPane>
>                             
>                         </Form.Section>
> ...
> 
> 
> Binding class:
> 
> ...
>  Action.getNamedActions().put("salvarAction", new Action() {
>       @Override
>       public void perform(Component source) {
>         if (lancamento == null) {
>           salvarNovo();
>         }
>         else {
>           salvarEdicao();
>         }
>         atualizarGrid();
>       }
>     });
> 
> ...
> 
> 
> private void salvarNovo() {
> 
>     try {
>       
>       Form.Flag flagDesc = null;
>       Form.Flag flagVal = null;
>       Form.Flag flagCat = null;
>       
>       String desc = descricao.getText().trim();
>       String val = valor.getText().trim();
>       
>       if(desc == null || "".equals(desc.trim())){ 
>         flagDesc = new Form.Flag(MessageType.ERROR, 
> resources.get("campoRequerido").toString());        
>       }
>       Form.setFlag(descricao, flagDesc);
>       
>       if(val == null || "".equals(val.trim())){   
>         flagVal = new Form.Flag(MessageType.ERROR, 
> resources.get("campoRequerido").toString());        
>       }
>       Form.setFlag(valor, flagVal);
>       
>       if(categoria == null){      
>         flagCat = new Form.Flag(MessageType.ERROR, 
> resources.get("campoRequerido").toString());        
>       }      
>       Form.setFlag(categoria, flagCat);
>       
>       if(flagDesc != null || flagVal != null || flagCat != null){
>         return;
>       }   
>       
>       lancamento = new Lancamento();
>       lancamento.setDescricao(desc);
>       lancamento.setConciliado(conciliado.isSelected());
>       lancamento.setData(data.getSelectedDate().toCalendar().getTime());
>       lancamento.setObservacao(observacoes.getText());
>       lancamento.setValor(new BigDecimal(numberFormat.parse(val)
>           .toString()));
>       lancamento.setTipoLancamento((CategoriaLancamento) categoria
>           .getSelectedItem());
> 
>       daoLancamento.cadastrar(lancamento);
>       cancelar();
>       Prompt.prompt(MessageType.INFO, resources.get("sucessoCadastro")
>           .toString(), this);
>     }
>     catch (Exception e) {
>       Prompt.prompt(MessageType.ERROR, resources.get("falhaCadastro")
>           .toString(), this);
>     }
> 
>   }
> 
>   private void salvarEdicao() {
> 
>     try {
> 
>       Form.Flag flagDesc = null;
>       Form.Flag flagVal = null;
>       Form.Flag flagCat = null;
>       
>       String desc = descricao.getText();
>       String val = valor.getText();
>       
>       if(desc == null || "".equals(desc.trim())){ 
>         flagDesc = new Form.Flag(MessageType.ERROR, 
> resources.get("campoRequerido").toString());        
>       }
>       Form.setFlag(descricao, flagDesc);
>       
>       if(val == null || "".equals(val.trim())){   
>         flagVal = new Form.Flag(MessageType.ERROR, 
> resources.get("campoRequerido").toString());        
>       }
>       Form.setFlag(valor, flagVal);
>       
>       if(categoria == null){      
>         flagCat = new Form.Flag(MessageType.ERROR, 
> resources.get("campoRequerido").toString());        
>       }      
>       Form.setFlag(categoria, flagCat);
>       
>       if(flagDesc != null || flagVal != null || flagCat != null){
>         return;
>       }    
>       
>       lancamento.setDescricao(desc);
>       lancamento.setConciliado(conciliado.isSelected());
>       lancamento.setData(data.getSelectedDate().toCalendar().getTime());
>       lancamento.setObservacao(observacoes.getText());
>       lancamento.setValor(new BigDecimal(numberFormat.parse(val)
>           .toString()));
>       lancamento.setTipoLancamento((CategoriaLancamento) categoria
>           .getSelectedItem());
> 
>       daoLancamento.alterar(lancamento);
>       cancelar();
>       Prompt.prompt(MessageType.INFO,
>           resources.get("sucessoEdicao").toString(), this);
>     }
>     catch (Exception e) {
>       Prompt.prompt(MessageType.ERROR, 
> resources.get("falhaEdicao").toString(),
>           this);
>     }
>   }
> 
> 
> I can't see a reason for flags no work in this scenario. I have another frame 
> that has just one field validated, and everything's right. Can you see 
> something wrong?
> 
> 
> Thank's
> 
> Luiz Gustavo S. de Souza
> 
> http://luizgustavoss.wordpress.com
> http://luizgustavoss.blogspot.com
> http://twitter.com/lugustso
> 
> 
> 2010/12/22 Greg Brown <[email protected]>
> No, flags definitely don't appear one at a time - you should be able to flag 
> all the fields in your form if you want to. The message won't appear until 
> you hover over the field, but it should be outlined, and you should see the 
> error icon.
> 
> There must be some other issue - not sure what it might be.
> 
> 
> On Dec 21, 2010, at 10:14 PM, Luiz Gustavo wrote:
> 
>> When the user enter some text in the field, it desapears, because flag is 
>> set to null in the begining of the salvarEdicao method:
>> 
>> Form.Flag flagDesc = null;
>> 
>> ...
>> 
>> if(desc == null || "".equals(desc.trim())){ 
>>         flagDesc = new Form.Flag(MessageType.ERROR, 
>> resources.get("campoRequerido").toString());        
>> }
>> Form.setFlag(descricao, flagDesc);
>> 
>> 
>> So in the case of desc != null, I clean the flag. The problem is that the 
>> flag for the second field (Valor) never apears. Initially i thought that 
>> flags apeared one per time (not all at the same time), but even when the 
>> first field is ok, the flag of the second doesn't apear.
>> 
>> Any idea?
>> 
>> 
>> 
>> 2010/12/22 Greg Brown <[email protected]>
>> If you want the flag to disappear when the user enters some text, you could 
>> add a listener to the text input that clears the flag when the text changes.
>> 
>> On Dec 21, 2010, at 10:02 PM, Luiz Gustavo wrote:
>> 
>>> Hi Greg,
>>> 
>>> I'm calling salvarEdicao when the user submit de form. I whant to validate 
>>> the requeired fields befor inserting.
>>> I'll se the classes you told me, but in my scenario is there anything I can 
>>> do?
>>> 
>>> 
>>> 
>>> 2010/12/22 Greg Brown <[email protected]>
>>> When are you calling the salvarEdicao() method? If you want to validate as 
>>> the user types, you'll need to call this method whenever the field value 
>>> changes. For text, you may want to consider using a validator for this. See 
>>> the classes in org.apache.pivot.wtk.validation and TextInput#setValidator().
>>> 
>>> 
>>> On Dec 21, 2010, at 9:37 PM, Luiz Gustavo wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I'm having problems using Form.flag.
>>>> 
>>>> 
>>>> I have a method for inserting data from a form, and a validation on the 
>>>> begining:
>>>> 
>>>> 
>>>> private void salvarEdicao() {
>>>> 
>>>>     try {
>>>> 
>>>>      Form.Flag flagDesc = null;
>>>>       Form.Flag flagVal = null;
>>>>       Form.Flag flagCat = null;
>>>>       
>>>>       String desc = descricao.getText();
>>>>       String val = valor.getText();
>>>>       
>>>>       if(desc == null || "".equals(desc.trim())){ 
>>>>         flagDesc = new Form.Flag(MessageType.ERROR, 
>>>> resources.get("campoRequerido").toString());        
>>>>       }
>>>>       Form.setFlag(descricao, flagDesc);
>>>>       
>>>>       if(val == null || "".equals(val.trim())){   
>>>>         flagVal = new Form.Flag(MessageType.ERROR, 
>>>> resources.get("campoRequerido").toString());        
>>>>       }
>>>>       Form.setFlag(valor, flagVal);
>>>>       
>>>>       if(categoria == null){      
>>>>         flagCat = new Form.Flag(MessageType.ERROR, 
>>>> resources.get("campoRequerido").toString());        
>>>>       }      
>>>>       Form.setFlag(categoria, flagCat);
>>>>       
>>>>       if(flagDesc != null || flagVal != null || flagCat != null){
>>>>         return;
>>>>       }     
>>>> 
>>>>       ...
>>>> }
>>>> 
>>>> 
>>>> When I try to submit a form with desc and val (description and value) 
>>>> empty, just one flag is presented. Even when I insert data in the 
>>>> "Descrição" field, the flag in the field "Descrição" continues to apear. 
>>>> The flag of field "Valor" doesn't apear in neigther cases.
>>>> 
>>>> 
>>>> Any idea?
>>>> 
>>>> Cheers,
>>>> Luiz Gustavo S. de Souza
>>>> 
>>>> http://luizgustavoss.wordpress.com
>>>> http://luizgustavoss.blogspot.com
>>>> http://twitter.com/lugustso
>>>> <frame1.png><frame2.png>
>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> Luiz Gustavo S. de Souza
>>> 
>>> http://luizgustavoss.wordpress.com
>>> http://luizgustavoss.blogspot.com
>>> http://twitter.com/lugustso
>> 
>> 
>> 
>> 
>> -- 
>> Luiz Gustavo S. de Souza
>> 
>> http://luizgustavoss.wordpress.com
>> http://luizgustavoss.blogspot.com
>> http://twitter.com/lugustso
> 
> 
> 
> 
> 

Reply via email to