Olá, estou tentando utilizar a função StringTokenizer e não estou conseguindo…
Quando vou fazer um cadastro de funcionário, onde tenho que colocar os papeis deles na empresa (por exemplo: Engenheiro, Analista, Gerente)sempre podendo atribuir mais de um papel para apenas um funcionário, eu não consigo pegar todos os papeis que ele pode ser.
Estou usando uma lista onde vou escolhendo os papeis do funcionário e jogando dentro de outra lista e quando vou passar para a página de cadastro do banco de dados eu não consigo 
Vou encaminhar minhas páginas:
A primeira é cadfunc01.jsp e não apresenta problemas.
<%@ page import="beans.exemplos.*"%>
<%@ page import="java.sql.*"%>
<jsp:useBean id="conect" class="beans.exemplos.Conexao">
<jsp:setProperty name="conect" property="*"/>
</jsp:useBean>
<%!
Connection conexao = null;
PreparedStatement sql = null;
ResultSet resultado = null;
ResultSet r_papel = null;
ResultSet r_nivel = null;
ResultSet r_turno = null;
%>
<%
conexao = conect.conectar();
sql = conexao.prepareStatement("SELECT * FROM papeis");
r_papel = sql.executeQuery();
sql = conexao.prepareStatement("SELECT * FROM nivel");
r_nivel = sql.executeQuery();
sql = conexao.prepareStatement("SELECT * FROM turnos");
r_turno = sql.executeQuery();
%>
<html>
<head>
<title>Cadastro de Funcion&aacute;rios</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function trocaItem(origem,destino){
if (origem.value == 0){
alert('Escolha uma opção!');
}
else{
if (destino.options[0].value == 0) {
destino.options[0] = null;
}
u = destino.options.length;
destino.options[u]=new Option(origem.options[origem.selectedIndex].text,origem.options[origem.selectedIndex].value);
origem.options[origem.selectedIndex]=null;
y = destino.options.length;
var empresas = new Array();
var aux;
for (var x=0; x < y; x++){
empresas[x] = destino.options[x].text + '|' + destino.options[x].value;
}
ordenado = empresas.sort();
while (destino.options.length){
destino.options.remove(0);
}
destino.selectedIndex = 0;
var s = ordenado.length;
for (var x=0; x < s; x++){
aux = ordenado[x].split("|");
destino.options[x]= new Option(aux[0],aux[1]);
}
}
if (origem.length == 0) {
origem.options[0] = new Option('Nenhuma opção',0);
}
}
</script>
<script language="JavaScript">
<!--
function confirma() {
resp = confirm('Enviar formulário?');
if (resp == true)
{
var len = document.cadastro.tfuncoes.length;
var str = '';
for(var i=0; i<len; i++) {
str += document.cadastro.tfuncoes.options[i].value + ',';
}
str = str.substring(0,str.length-1);
document.cadastro.strfuncoes.value = str; //strfuncoes recebe todos os papeis
document.cadastro.submit();
}
else
{ return };
}
//-->
</script>
</head>
<body leftmargin="0" topmargin="0">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="318" align="center" valign="middle">
<form action="cadfunc02.jsp" method="post" name="cadastro" id="cadastro">
<input type="Hidden" name="strfuncoes">
<table width="413" border="0" cellpadding="0" cellspacing="2" bgcolor="#666666">
<tr>
<td width="409" height="25" align="center"><font color="#FFFFFF" size="2" face="Verdana"><strong>Cadastro de Funcion&aacute;rios</strong></font></td>
</tr>
<tr>
<td height="200"><table width="100%" height="209" border="0" cellpadding="3" cellspacing="0" bgcolor="#CCCCCC">
<tr>
<td width="44" align="right"><font size="2" face="Verdana">Nome:</font></td>
<td colspan="4"><input name="func_nome" type="text" id="func_nome" size="55"></td>
</tr>
<tr>
<td height="30" align="right">ID:</td>
<td width="60" colspan="2"><input name="id" type="text" id="id" size="10"></td>
<td width="46"><div align="right">Senha:</div></td>
<td width="135"><input name="senha" type="password" id="senha" size="10"></td>
</tr>
<tr>
<td height="30" align="right"><font size="2" face="Verdana">Turno:</font></td>
<td colspan="3"><font size="2" face="Verdana">
<select name="codturno" size="1" id="codturno">
<% while (r_turno.next()) { %>
<% String desc_turno = r_turno.getString("descricao"); %>
<% int cod_turno = r_turno.getInt("codturno"); %>
<option value="<%= cod_turno %>"><%= desc_turno %></option>
<% } %>
</select>
</font><font size="2" face="Verdana">&nbsp;
</font></td>
<td><font size="2" face="Verdana">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="100" height="22">
<param name="BGCOLOR" value="">
<param name="movie" value="Bturno.swf">
<param name="quality" value="high">
<param name="base" value=".">
<embed src="Bturno.swf" base="." quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="100" height="22" ></embed>
</object>
</font></td>
</tr>
<tr>
<td height="61" align="right"><font size="2" face="Verdana">Papel:</font></td>
<td><font size="2" face="Verdana">
<select name="codpapel" size="4" multiple class="inputBox">
<% while (r_papel.next()) { %>
<% String papel = r_papel.getString("descricao"); %>
<% int cod_papel = r_papel.getInt("codpapel"); %>
<option value="<%= cod_papel %>"><%= papel %></option>
<% } %>
</select>
</font><font size="2" face="Verdana">&nbsp;
</font></td>
<td align="center">
<table>
<tr>
<td width="24"><input type="button" value="»" onclick="trocaItem(document.cadastro.codpapel,document.cadastro.tfuncoes);" class="inputBox">
</td>
</tr>
<tr>
<td><input type="button" value="«" onclick="trocaItem(document.cadastro.tfuncoes,document.cadastro.codpapel);" class="inputBox">
</td>
</tr>
</table>
</td>
<td align="left"><select name="tfuncoes" size="4" class="inputBox">
<option value="0">Nenhum cargo escolhido</option>
</select>
&nbsp;&nbsp;</td>
<td><font size="2" face="Verdana">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="100" height="22" align="absbottom">
<param name="BGCOLOR" value="">
<param name="movie" value="Bnovo_papel.swf">
<param name="quality" value="high">
<param name="base" value=".">
<embed src="Bnovo_papel.swf" width="100" height="22" align="absbottom" base="." quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ></embed>
</object>
</font></td>
</tr>
<tr>
<td align="right"><font size="2" face="Verdana">N&iacute;vel:</font></td>
<td colspan="3"><font size="2" face="Verdana">
<select name="codnivel" size="1" id="codnivel">
<% while (r_nivel.next()) { %>
<% String desc_nivel = r_nivel.getString("descricao"); %>
<% int cod_nivel = r_nivel.getInt("codnivel"); %>
<option value="<%= cod_nivel %>"><%= desc_nivel %></option>
<% } %>
</select>
</font><font size="2" face="Verdana">&nbsp;
</font></td>
<td><font size="2" face="Verdana">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="100" height="22" align="absbottom">
<param name="BGCOLOR" value="">
<param name="movie" value="Bnovo_nivel.swf">
<param name="quality" value="high">
<embed src="Bnovo_nivel.swf" width="100" height="22" align="absbottom" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ></embed>
</object>
</font></td>
</tr>
<tr>
<td height="30" colspan="5" align="center"><input type="button" name="Cadastrar" value="Cadastrar" onClick="javascript:confirma();">
<input type="reset" name="Cancelar" value="Cancelar">
</td></tr>
</table></td>
</tr>
</table>
</form></td>
</tr>
</table>
<% conexao.close(); %>
</body>
</html>
Porém a segunda página: cadfunc02.jsp dá erro
<%@ page import="beans.exemplos.*"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.awt.*" %>
<jsp:useBean id="func" class="beans.exemplos.Funcionario">
<jsp:setProperty name="func" property="*"/>
</jsp:useBean>
<jsp:useBean id="tur" class="beans.exemplos.Turno">
<jsp:setProperty name="tur" property="*"/>
</jsp:useBean>
<jsp:useBean id="pap" class="beans.exemplos.Papel">
<jsp:setProperty name="pap" property="*"/>
</jsp:useBean>
<jsp:useBean id="niv" class="beans.exemplos.Nivel">
<jsp:setProperty name="niv" property="*"/>
</jsp:useBean>
<jsp:useBean id="conect" class="beans.exemplos.Conexao">
<jsp:setProperty name="conect" property="*"/>
</jsp:useBean>
<%!
Connection conexao = null;
PreparedStatement sql = null;
ResultSet resultado = null;
String func_nome = null;
String id = null;
String senha = null;
String strfuncoes = null;
String papel[];
int codnivel = 0;
int codfunc = 0;
int codpapel = 0;
int codturno = 0;
int er = 0;;
int cont_token = 0;
%>
<%
//Class.forName("org.gjt.mm.mysql.Driver").newInstance();
//conexao = DriverManager.getConnection("jdbc:mysql://localhost/wes");
conexao = conect.conectar();
codfunc = func.getCodfunc();
func_nome = func.getFunc_nome();
id = func.getId();
senha = func.getSenha();
codnivel = niv.getCodnivel();
strfuncoes = pap.getStrfuncoes();// variavel que contém os papeis escolhidos
codturno = tur.getCodturno();
String stringToTokenize = strfuncoes;
StringTokenizer tokens = new StringTokenizer (stringToTokenize);
cont_token = tokens.countTokens();
int i = 1;
while (tokens.hasMoreTokens()){ //separação da String em tokens para pegar os códigos dos papeis do funcionário
papel[i] = tokens.nextToken();
i = i+1;
}
if (func_nome != null & id != null & senha != null){
sql = conexao.prepareStatement("SELECT func_nome FROM funcionarios WHERE func_nome = '"+ func_nome +"'");
resultado = sql.executeQuery();
if (resultado.next()) {
er = 1;
} else {
sql = conexao.prepareStatement("INSERT INTO funcionarios (func_nome,id,senha,codnivel) VALUES('"+ func_nome +"','"+ id +"','"+ senha +"','"+ codnivel +"')");
int inserir = sql.executeUpdate();
sql = conexao.prepareStatement("SELECT codfunc FROM funcionarios WHERE func_nome = '"+ func_nome +"'");
resultado = sql.executeQuery();
if (resultado.next()) {
codfunc = resultado.getInt("codfunc");
}
//sql = conexao.prepareStatement("INSERT INTO papeis_funcionario VALUES('"+ codpapel +"','"+ codfunc +"')");
//int inserir2 = sql.executeUpdate();
sql = conexao.prepareStatement("INSERT INTO turno_funcionario VALUES('"+ codfunc +"','"+ codturno +"')");
int inserir3 = sql.executeUpdate();
er = 0;
}
} else {
er = 2;
}
sql = conexao.prepareStatement("SELECT func_nome FROM funcionarios where func_nome = '"+ func_nome +"'");
resultado = sql.executeQuery();
%>
<html>
<head>
<title>Cadastro de Funcionário</title>
</head>
<body>
<%// for (int j=0; j < cont_token; j++) {%>
<%= //papel[j]%>
<%//}%>
<% if (er == 1) {%>
Funcionário: <%= func_nome%> já cadastrado.
<%}%>
<% if (er == 2) {%>
Os campos não podem estar vazios.
<%} else { %>
<% if (resultado.next()) {%>
Funcionário: <%= codfunc %>, <%= func_nome %> cadastrado com sucesso.
<%}%>
<%}%>
<% conexao.close(); %>
</body>
</html>
O erro é o seguinte:
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: -1 in the jsp file: null
Generated servlet error:
[javac] Since fork is true, ignoring compiler setting.
[javac] Compiling 1 source file
[javac] Since fork is true, ignoring compiler setting.
[javac] C:Tomcat 4.1workStandalonelocalhostwesjspcadfunc02_jsp.java:211: ‘)’ expected
[javac] out.write("
“);
[javac] ^
[javac] C:Tomcat 4.1workStandalonelocalhostwesjspcadfunc02_jsp.java:211: ‘void’ type not allowed here
[javac] out.write(”
");
[javac] ^
[javac] 2 errors