-
Posts
23 -
Cadastrado em
-
Última visita
Reputação
16-
Java Como combinar um código HTML e JAVA, usando PrimeFaces e JSF
donutLukke postou um tópico em Java/Android SDK
Boa noite pessoal! Estou tentando rodar uma aplicação Maven no Eclipse IDE for Enterprise Java and Web Developers, mas o resultado que aparece na interface gráfica não condiz com o que é mostrado no site do PrimeFaces. Tem esse código .xhtml: <h:form> <h:panelGrid id="grid" cellpadding="5" columns="2" style="margin-bottom:10px"> <f:facet name="header"> <p:messages id="msgs" /> </f:facet> <p:outputLabel for="firstname" value="Firstname:" /> <p:inputText id="firstname" value="#{userView.firstname}" /> <p:outputLabel for="surname" value="Surname:" /> <p:inputText id="surname" value="#{userView.lastname}" required="true" requiredMessage="Surname is required." /> </h:panelGrid> <h:panelGrid columns="6" cellpadding="5"> <p:commandButton value="All" id="btnAll" process="@all" update="grid" action="#{userView.save}" /> <p:commandButton value="Form" id="btnForm" process="@form" update="grid" action="#{userView.save}" /> <p:commandButton value="This" id="btnThis" process="@this" update="grid" action="#{userView.save}" /> <p:commandButton value="None" id="btnNone" process="@none" update="grid" action="#{userView.save}" /> <p:commandButton value="Parent" id="btnParent" process="@parent" update="grid" action="#{userView.save}" /> <p:commandButton value="This Surname" id="btnSurname" process="@this,surname" update="grid" action="#{userView.save}" /> </h:panelGrid> </h:form> E esse código Java: @Named @RequestScoped public class UserView { private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public void save() { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Welcome " + firstname + " " + lastname)); } } Quando apertasse o botão "All", o desejável seria que aparecesse isso na tela: Mas o meu não aparece nada quando aperto: Estou usando esse código no arquivo process.xhtml: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:head> </h:head> <body> <h:form> <h:panelGrid id="grid" cellpadding="5" columns="2" style="margin-bottom:10px"> <f:facet name="header"> <p:messages id="msgs" /> </f:facet> <p:outputLabel for="firstname" value="Firstname:" /> <p:inputText id="firstname" value="#{userView.firstname}" /> <p:outputLabel for="surname" value="Surname:" /> <p:inputText id="surname" value="#{userView.lastname}" required="true" requiredMessage="Surname is required." /> </h:panelGrid> <h:panelGrid columns="6" cellpadding="5"> <p:commandButton value="All" id="btnAll" process="@all" update="grid" action="#{userView.save}" /> <p:commandButton value="Form" id="btnForm" process="@form" update="grid" action="#{userView.save}" /> <p:commandButton value="This" id="btnThis" process="@this" update="grid" action="#{userView.save}" /> <p:commandButton value="None" id="btnNone" process="@none" update="grid" action="#{userView.save}" /> <p:commandButton value="Parent" id="btnParent" process="@parent" update="grid" action="#{userView.save}" /> <p:commandButton value="This Surname" id="btnSurname" process="@this,surname" update="grid" action="#{userView.save}" /> </h:panelGrid> </h:form> </body> </html> E esse no UserView.java: import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.context.FacesContext; @RequestScoped @ManagedBean(name = "userView") public class UserView { private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public void save() { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Welcome " + firstname + " " + lastname)); } } O que poderia estar errado para não aparecer a mensagem de "Surname is required."? Tenho essas dependências no meu projeto: Site do PrimeFaces com o componente que estou tentando utilizar: PrimeFaces Showcase -
Java Como deveria compilar a aplicação
donutLukke respondeu ao tópico de donutLukke em Java/Android SDK
Muito obrigado amigo, excelente ajuda. -
Java Como deveria compilar a aplicação
donutLukke respondeu ao tópico de donutLukke em Java/Android SDK
Mas como seria feito isso? Eu baixaria a versão antiga na minha máquina e já poderia abrir o arquivo HTML? Ou tenho que baixar também esse "Appletviewer" mencionado por você? Tenho a versão do Java 20 instalada, teria que desinstalá-la para rodar o applet? -
Java Como deveria compilar a aplicação
donutLukke respondeu ao tópico de donutLukke em Java/Android SDK
Desculpa por não ter colocado o link, foi daqui: https://www.grc.nasa.gov/www/k-12/VirtualAero/BottleRocket/airplane/kiteprog.html O botão no final da página escrito "Download Aplet" que você consegue o arquivo zipado, a diferença dos dois arquivos (o que eu coloquei aqui e o do site) é um arquivo HTML que eu exclui que abre o site do download, não interfere no outro arquivo HTML. -
Boa noite pessoal! Recentemente baixei um arquivo zipado e as instruções para rodar o programa contido nele, só dizia que era necessário abrir o arquivo HTML em algum navegador que eu poderia ver a aplicação, mas não aconteceu. A pasta depois de criada possuia esses arquivos: Vocês saberiam me dizer como deveria prosseguir para poder abrir o arquivo HTML e ver a aplicação esperada? (Estarei colocando o arquivo .zip para baixarem e tentarem compilar) KiteModeler.rar
-
Java Erro de sintaxe e limitar casas decimais
donutLukke respondeu ao tópico de donutLukke em Java/Android SDK
Não saberia responder sua pergunta, estou bem no início da programação Java, acredito que talvez possa ser o compilador que eu esteja usando, que fica no Replit, porque quando compilei o código em um compilador online não apresentou erros. Você já usou o Replit ou conhece um ambiente melhor para programar em Java? -
Bom dia, boa tarde ou boa noite pessoal! Comecei a me aventurar na programação em Java há pouco tempo e tenho algumas dúvidas. 1° O código abaixo possui algum erro de sintaxe no início? Estou usando um compilador e ele emite a seguinte mensagem antes de "public class Student": "Student.java is not on the classpath of project myartifactid, only syntax errors are reported". 2° Como eu faço para que na impressão, as médias das notas que seria o "Average" saia com duas casas decimas de precisão? public class Student { String Name; int Registration; String Cpf; String DateOfBirth; double Height; int Age; double Note[] = new double[5]; double Average; String SituationEvidence; public Student(String Name, int Registration, String Cpf, String DateOfBirth, double Height, int Age, double Note1, double Note2, double Note3, double Note4, double Note5) { this.Name = Name; this.Registration = Registration; this.Cpf = Cpf; this.DateOfBirth = DateOfBirth; this.Height = Height; this.Age = Age; this.Note[0] = Note1; this.Note[1] = Note2; this.Note[2] = Note3; this.Note[3] = Note4; this.Note[4] = Note5; CalculateAverage(); } public void SetNote(int Registration, double Note) { if ((Registration < 1) || (Registration > this.Note.length)) return; this.Note[Registration-1] = Note; CalculateAverage(); } public double GetNote(int Registration) { if ((Registration < 1) || (Registration > Note.length)) return 0; return Note[Registration-1]; } private void CalculateAverage() { double Sum = 0; for (int i = 0; i < Note.length; i++) { Sum += Note[i]; } Average = Sum / Note.length; SituationEvidence(); } private void SituationEvidence() { if (Average > 7) { this.SituationEvidence = "Approved!"; } else if (Average > 5) { this.SituationEvidence = "In exam."; } else { this.SituationEvidence = "Disapproved."; } } public String toString() { String out = ""; out += "\nName: " + Name + " \n"; out += "Registration: " + Registration + " \n"; out += "Cpf : " + Cpf + " \n"; out += "Date of birth: " + DateOfBirth + " \n"; out += "Height: " + Height + " \n"; out += "Age: " + Age + " \n"; out += "Average: " + Average + " \n"; out += "Bimonthly situation: " + SituationEvidence + " \n"; return out; } public static void main(String[] args) { Student student[] = new Student[3]; student[0] = new Student("Lucas", 1, "111", "15/05/2001", 1.80, 21, 5.8, 9.2, 4.1, 7.8, 8); student[1] = new Student("Luan", 2, "222", "15/05/2001", 1.79, 21, 9, 9.3, 8, 7, 6); student[2] = new Student("Letícia", 3, "333", "21/10/2002", 1.68, 20, 5, 4, 6, 3, 6.2); for (int i = 0; i < student.length; i++) { System.out.println(student[i]); } } } Desde já, agradeço pela atenção.
-
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Teria como você me explicar qual seria a função do void *info? typedef struct st_AVL { void* info; struct st_AVL* esquerdo; struct st_AVL* direito; short altura; } AVL; -
C++ Programa que separa produto mais vendido e menos vendido
donutLukke respondeu ao tópico de Fernanderson_ em C/C#/C++
Fiz esse, mas está em linguagem C. #include <stdio.h> #define N 10 void inicializaVendas(int tab_vendas[]){ int v; for(v = 0; v <= N; v++) tab_vendas[v] = 0; } void preencheVendas(int codigo, int tab_vendas[]){ tab_vendas[codigo]++; } int main(){ int vendas[N]; int menos_vendido, mais_vendido, codigo; int temp; inicializaVendas(vendas); printf("\n"); do{ printf("Digite o código do produto: "); scanf("%d", &codigo); preencheVendas(codigo, vendas); }while(codigo != 0); temp = vendas[1]; for( codigo = 1; codigo <= N; codigo++){ if(temp > vendas[codigo]){ menos_vendido = codigo; temp = vendas[codigo]; } } temp = vendas[1]; for( codigo = 1; codigo <= N; codigo++){ if(temp < vendas[codigo]){ mais_vendido = codigo; temp = vendas[codigo]; } } printf("\nCódigo do produto menos vendido: %d\nQuantidade de vezes que foi vendido: %d", menos_vendido, vendas[menos_vendido]); printf("\n\nCódigo do produto mais vendido: %d\nQuantidade de vezes que foi vendido: %d\n", mais_vendido, vendas[mais_vendido]); for( codigo = 1; codigo <= N; codigo++) printf("\n%d --> %d", codigo, vendas[codigo]); return 0; } -
donutLukke começou a seguir devair1010
-
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Consegui encontrar o erro, a invasão de memória deve ter ocorrido por falha do compilador ou do buffer, como disse anteriormente, o erro estava na função "compareAluno", as condições colocadas estavam dando conflito por causa da seguinte condição "else if(strlen(variavel) <= (CANOME-1))", dessa forma, ao cair uma string de tamanho igual ou maior que "char cpf[CACPF]" , o código fazia a comparação da string "cpf" digitada com a string "nome" já adicionada. Forma errada do código: int compareAluno(stc_Aluno **a, char variavel[]){ int i, j, aux = 0; if(*a != NULL){ if(strlen(variavel) == (CAID-1)){ if(strcmp(variavel, (*a)->id) == 0) return 1; else if(atof(variavel) < atof((*a)->id)) i = compareAluno(&(*a)->esquerdo, variavel); else if(atof(variavel) > atof((*a)->id)) j = compareAluno(&(*a)->direito, variavel); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } else if(strlen(variavel) <= (CANOME-1)){ // erro nesta linha if(strcmp(variavel, (*a)->nome) == 0){ return 1; } int i = compareAluno(&(*a)->esquerdo, variavel); int j = compareAluno(&(*a)->direito, variavel); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } else if(strlen(variavel) == (CACPF-1)){ if(strcmp(variavel, (*a)->cpf) == 0) return 1; int i = compareAluno(&(*a)->esquerdo, variavel); int j = compareAluno(&(*a)->direito, variavel); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } } else{ if(aux == 1) return aux; } return aux; } Forma correta do código: int compareAluno(stc_Aluno **a, char variavel[], int opcao){ int i, j, aux = 0; if(*a != NULL){ if(opcao == 1){ if(strcmp(variavel, (*a)->id) == 0) return 1; else if(atof(variavel) < atof((*a)->id)) i = compareAluno(&(*a)->esquerdo, variavel, opcao); else if(atof(variavel) > atof((*a)->id)) j = compareAluno(&(*a)->direito, variavel, opcao); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } else if(opcao == 2){ if(strcmp(variavel, (*a)->nome) == 0) return 1; int i = compareAluno(&(*a)->esquerdo, variavel, opcao); int j = compareAluno(&(*a)->direito, variavel, opcao); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } else if(opcao == 3){ if(strcmp((*a)->cpf, variavel) == 0) return 1; int i = compareAluno(&(*a)->esquerdo, variavel, opcao); int j = compareAluno(&(*a)->direito, variavel, opcao); if(i == 1) return aux = 1; else if(j == 1) return aux = 1; else return 0; } } else{ if(aux == 1) return aux; } return aux; } Desde já, agradeço pelo aprendizado de como formular um tópico seguindo as diretrizes do fórum para explicitar minha dúvida. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Muito obrigado. Uma pessoa aparentemente encontrou o problema, na função "compareAluno" a condição para procurar pelo ID, NOME ou CPF é o tamanho da string, como na condição que verifica o NOME há um "<=", sempre que eu colocar um número >= 12 (que é o tamanho da string do CPF), o código não passará na condição do CPF. Vou dar uma formulada no código, se conseguir resolver encerro o tópico. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Você rodou o código que mandei e fez o exemplos que tem nas imagens? Consegue dar um panorama do que possa estar acontecendo? -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Compreendi agora, para mim colocar o código todo aqui no site (ainda mais com tantas linhas) seria tipo uma "poluição do post". Obrigado novamente. -
donutLukke começou a seguir arfneto
-
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Em relação a isto: Acredito que me pronunciei da forma errada, na verdade é quando igualo ou sobreponho o tamanho da string nome[ ] em relação a string cpf[ ], por exemplo: quando CANOME é <= 11, o código roda corretamente. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define CAID 10 #define CANOME 11 // <= 11 o código funciona #define CACPF 12 typedef struct A { char id[CAID]; char nome[CANOME]; char cpf[CACPF]; struct A *esquerdo; struct A *direito; short altura; }stc_Aluno; Já quando CANOME >= 12 o código não consegue mais detectar se o CPF digitado já existe no banco de dados. #include <string.h> #include <ctype.h> #define CAID 10 #define CANOME 12 // >= 12 o código não funciona #define CACPF 12 typedef struct A { char id[CAID]; char nome[CANOME]; char cpf[CACPF]; struct A *esquerdo; struct A *direito; short altura; }stc_Aluno; Abaixo estarei enviando o código em arquivo.txt, tirei os caracteres emojis para uma melhor visualização nos compiladores. Código.txt Eu aceito qualquer crítica, levo como aprendizado, sua opinião importa muito para mim. -
C Invasão de memória de uma string sobre outra string
donutLukke respondeu ao tópico de donutLukke em C/C#/C++
Ok, vou reconfigurar o código e daqui a pouco posto aqui, desculpe a minha burrice ou ingenuidade.
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais