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