他の回答は、nullが存在する理由を示しています。csvSkills文字列を初期化していないのです。
知っておくべきもう1つのことは、csvSkillsにはStringではなくStringBuilderを使用する必要があるということです。ループ内の文字列に追加することは非常に非効率的です。舞台裏では、コンパイラはループを通過するたびに新しいStringBuilderを作成して、2つの文字列を連結し、それを破棄します。ループを通過するたびに、その反復用に作成されたStringBuilderのサイズはどんどん大きくなります。すべての追加に単一のStringBuilderインスタンスを使用する必要があります。
StringBuilder csvSkills = new StringBuilder();
for (String s: request.getParameterValues("chkSkills")){
if (csvSkills.length > 0) csvSkills.append(",");
csvSkills.append(s);
}
return csvSkills.toString();
私はCSVを処理する無料のオープンソースJavaユーティリティの作者です。これには、OstermillerCSVライブラリを使用することをお勧めします。必要な場合にのみコンマを追加するロジックを処理するだけでなく、追加するフィールドに引用符またはコンマが含まれている場合の引用符とエスケープも処理します。
StringWriter writer = new StringWriter();
CSVPrinter csvSkills = new ExcelCsvPrinter(writer);
for (String s: request.getParameterValues("chkSkills")){
csvSkills.write(s);
}
return writer.toString();