código html gerado dinamicamente não pega pelo request

Ola pessoal
Como faço para pegar os valores de um select que estou gerando dinamicamente com Jsp e com Javascript
JavaScript

<script >
        <!--
        function addoption(frm)
        {
                var indexSelect = document.getElementById("disciplinas").selectedIndex;
                var codDisc = frm.disciplinas.options[indexSelect].value;
                var array = codDisc.split("|");
                var cod = array[0];
                var nome = array[1];
                var sel1 =frm.opcoes;
                quant = sel1.options.length
                for (var i =0;i <=quant;i++)
                {
                    sel1.options[i] =new Option(nome,cod);                    
                }
        }

        function removeoption(frm)
        {
                
                var sel1 =frm.opcoes;
                quant = sel1.options.length;
                for (var i =0;i <=quant;i++)
                {
                    if(sel1.options[i].selected){
                        sel1.options[i] = null;
                        //window.alert(sel1.options[i].value);
                    }                    
                }
        }
        -->
        </script>

Trecho de código:

<form name="formDisciplina" method="post" action="">
            <br>
                <%
                        if(request.getParameterValues("opcoes") != null){
                            String[] opcoes = request.getParameterValues("opcoes");
                            for(int i = 0; i < opcoes.length; i++){
                                out.println(opcoes[i]);
                            }
                        }


                %>
                <h3>GRADE</h3>
            <table border="0">

                

                <tbody>
                        <tr>
                                    <td>Código</td>
                                    <td>
                                        <select name="disciplinas" id="disciplinas">
                                            <%
                                                List<DisciplinaTO> lista = discDao.buscarTodas();
                                                for(DisciplinaTO discTO:lista){
                                                    out.println("<option value='"+discTO.getCod()+"|"+discTO.getNome()+"' >");
                                                    out.println(discTO.getNome());
                                                    out.println("</option>");
                                                }
                                            %>
                                        </select>
                                    </td>
                                </tr>
                                <tr>
                                    <td><input type="button" value="Adicionar" name="adicionar" onclick="addoption(this.form)" /></td>
                                    <td><input type="button" value="Remover" name="remover"  onclick="removeoption(this.form)" /></td>
                                </tr>
                                <tr>
                                    <td colspan="2">
                                    <select multiple size=5 name="opcoes" id="opcoes">
                                    </select>
                                    </td>
                                </tr>
                            
                    <tr>
                        <td></td>
                        <td><input type="submit" value="Cadastrar" name="Cadastrar" /></td>
                    </tr>
                </tbody>
            </table>

        </form>

O select Opcoes é gerado dinamicamente como vcs podem ver acima. Mas não consigo pegar os valores desse select atraves do objeto request. Alguem sabe como faço para ao dar o submit esses valores passarem???

O html não tem nenhum option por isso não está retornando nada no request.

Abraço,

Fred