我正在使用Woodstock组件开发Web应用程序。简而言之,如果下拉值等于“PRIMARY KEY”,则该函数应将表的名称(从文本字段)存储到String pk / primaryKey中。
我目前面临的问题是从该功能获得的结果是:
"abc"
而不是
"a, b, c"
为什么会这样?
public void addPK(TextField tf, DropDown dd, StringBuilder pk, int val) {
if (((String) dd.getValue()).equals("PRIMARY KEY")) {
if (val == 0) {
pk.append((String) tf.getValue());
val++;
} else {
pk.append(", " + (String) tf.getValue());
}
}
}
public String createButton1_action() {
StringBuilder primaryKey = new StringBuilder();
int pkCheck = 0;
addPK(column_TF1, pkDropDown1, primaryKey, pkCheck);
addPK(column_TF2, pkDropDown2, primaryKey, pkCheck);
addPK(column_TF3, pkDropDown3, primaryKey, pkCheck);
.
.
}
谢谢。
答案 0 :(得分:3)
pkcheck值始终为零。 S为每次调用后增加pkcheck值或者你可以用你的stringbuider长度值来che你可以改变你的方法
public void addPK(TextField tf, DropDown dd, StringBuilder pk) {
if (((String) dd.getValue()).equals("PRIMARY KEY")) {
if (pk.length()== 0) {
pk.append((String) tf.getValue());
} else {
pk.append(", ").append((String) tf.getValue());
}
}
}
public int addPK(TextField tf, DropDown dd, StringBuilder pk, int val) {
if (((String) dd.getValue()).equals("PRIMARY KEY")) {
if (val == 0) {
pk.append((String) tf.getValue());
val++;
} else {
pk.append(", " + (String) tf.getValue());
}
}
return val;
}
public String createButton1_action() {
StringBuilder primaryKey = new StringBuilder();
int pkCheck = 0;
pkCheck = addPK(column_TF1, pkDropDown1, primaryKey, pkCheck);
pkCheck = addPK(column_TF2, pkDropDown2, primaryKey, pkCheck);
pkCheck = addPK(column_TF3, pkDropDown3, primaryKey, pkCheck);
.
.
}
*如果您使用的是StringBuilder或StringBuffer,最佳做法是使用追加操作而不是'+'操作符
pk.append(", " + (String) tf.getValue());
替换为
pk.append(", ").append((String) tf.getValue());
*
答案 1 :(得分:2)
因为您要发送值为0
的val参数 int pkCheck = 0;
addPK(column_TF1, pkDropDown1, primaryKey, pkCheck); // value is 0 here
和addpK方法
if (val == 0) {
pk.append((String) tf.getValue());
val++;
}
因此,要获得所需的结果,您需要将pCheck的值设置为其他值而不是0
答案 2 :(得分:2)