ユーザー管理者と手動で編集する前に、カスタム フィールドを編集することしかできません。
私のコードの何が問題で、これを解決するにはどうすればよいですか??
まさに、ポータルにログインするときにユーザー カスタム属性に値を割り当てようとしています。また、指定された条件で ExpandoColumn を取得できません。
問題は、ExpandoValue が null であることです。
public class LoginAction extends Action {
public void run(HttpServletRequest req, HttpServletResponse res) {
User currentUser;
try {
currentUser = PortalUtil.getUser(req);
long userId = PrincipalThreadLocal.getUserId();
long companyId = currentUser.getCompanyId();
long groupId = GroupLocalServiceUtil.getGroup(companyId, "Guest").getGroupId();
/* Get de CustomField Segmentation */
ExpandoTable expandoTable = ExpandoTableLocalServiceUtil.getDefaultTable(companyId, User.class.getName());
ExpandoColumn expandoColumn = ExpandoColumnLocalServiceUtil.getColumn(companyId, User.class.getName(), expandoTable.getName(), "Segmentation");
if (expandoColumn != null) {
ExpandoValue expandoValue = ExpandoValueLocalServiceUtil.getValue(expandoTable.getTableId(), expandoColumn.getColumnId(), userId);
if (expandoValue != null) {
expandoValue.setData(finalsegment);
ExpandoValueLocalServiceUtil.updateExpandoValue(expandoValue);
}
}
}
要約:私の問題は
ExpandoValue expandoValue = ExpandoValueLocalServiceUtil.getValue(expandoTable.getTableId(), expandoColumn.getColumnId(), classPK);
カスタム属性の値にアクセスすると Null になります。この customattribute を手動で編集してから同じコードを実行すると、動作します!!! 理由がわかりませんし、これを解決する方法もわかりません。