OK. Any chance you could put together a sample app that demonstrates the problem?
On Dec 22, 2010, at 4:06 PM, Luiz Gustavo wrote: > Hi Greg, > > I did the tests and flags are really being instantiated and associated with > the fields. > As you can see in the images attached, I've debuged the code and for the > fields "descricao" and "valor", that were empty, the flags were instantiated > and associated. > When I resumed the debug, de frame just showed the first flag in the > "descricao" field. > > Luiz Gustavo > > > 2010/12/22 Greg Brown <[email protected]> > 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 >> >> >> >> >> > > > > > -- > Luiz Gustavo S. de Souza > > http://luizgustavoss.wordpress.com > http://luizgustavoss.blogspot.com > http://twitter.com/lugustso > <flag_debug.png><flag_frame.png><flag_value_field.png>
