実習期間問題ログ

10000 ワード

インターンシップ2ヶ月半、企業ポータルサイトのような開発プロジェクトに参加しました.プロジェクトが採用するクラウドコンピューティングサービスモデルには、インフラストラクチャ、すなわちサービス(IaaS)、プラットフォーム、すなわちサービス(PaaS)、ソフトウェア、すなわちサービス(SaaS)が含まれる.プロジェクトはSpring BootフレームワークとSSMフレームワークに基づいて、Redisデータベースを使用する.SaaSアプリケーションの構成共有は、対応するモバイル端末appを開発した後、API-Gatewayを導入し、モバイルクライアントからサービス端末への通信効率を向上させるため、Consulで実現される.以下は実習期間中に出会ったいくつかの問題と分析、解決策である.
1、質問:svnからSTSにプロジェクトをインポートしますか?解決:File-Import-SVN-SVNから項目をチェックアウトする
2、質問:svnからIntellij Ideaにプロジェクトをインポートしますか?解決:起動時に「Check out from Version Control-subversion」を選択し、リモートウェアハウスのurlを追加し、プロジェクトをエクスポートします(svnのアカウントとパスワードを割り当てる必要があります).
3、saas-websiteモジュールでは、データがどのように伝達されているかがほぼ明らかになった:(1)requestリクエストが入ってきて、フィルタStaticUrlDispatchFilterを経てarticleServiceサービスを手に入れ、uriからレコード全体を手に入れ、requestドメインの「column」属性に入れ、転送する.(2)コントローラRenderControllerに入りrequestドメインからcolumnレコードを取得する.(3)次にcolumnをパラメータとして、構造方法によってColumnDataMethodクラス(TemplateMethodModelExを継承するテンプレートメソッドクラス)を構築します.このクラス内でexecメソッドが自動的に実行されます.(このメソッドが入力するListタイプのパラメータは、実際にはテンプレートページ上の ,”top10” List 0 )。
(4) , articleCondition , , articleList。
(5) ,,”top10” ColumnDataMethod , exec() , Map>オブジェクトによってmapdataに り てられている.

4、 :
saas_website :
org.springframework.web.client.HttpServerErrorException:
500 Internal Server Error
saas_informationモジュール :Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Unknown column 'TITLE' in 'field list'
:CMS_ARTICLEなどのデータテーブルが を するため、データがすべてデータベースのテーブル を にして された 、 するMapper.xmlマッピングファイルも され、 にSQL である.
5、freemarkerテンプレートの ページ えばindex.htmlページ template.html:
index.html , bindURL template.html url ;

1)data-id :data-id="'${columnInfo.name}' + '-1'")リンクurlの :href="${url(a)}" // a 3) の :#if> 4) フォーマットの :${a.createTime?number_to_date} // , yyyy-MM-dd , number_to_date

6、 :
- , freemarker article.thumbnailChartId articleラベルの を にし、サムネイルが れない.articleのタイトルや などの はすべて できます. :mapper.xmlマッピングファイルでMySQL でクエリを った 、このフィールドは べられませんでした. :MySQL

7、 :
freemarker content , content , html 。
content ( ), 50 , article.contentを するとhtmlラベルが されます :JavaはHTMLの のすべてのラベルを して、 に2 で、オープンソースのjarで するか、 で を くか.Jsoupオープンソースjarパッケージ(mavenプロジェクト )をインポートし、フィルタコードは の りです:public static String getTextFromTHML(String htmlStr) {
Document doc = Jsoup.parse(htmlStr);
String text = doc.text();
// remove extra white space
StringBuilder builder = new StringBuilder(text);
int index = 0;
while(builder.length()>index){
char tmp = builder.charAt(index);
if(Character.isSpaceChar(tmp) || Character.isWhitespace(tmp)){
builder.setCharAt(index, ' ');
}
index++;
}
text = builder.toString().replaceAll(" +", " ").trim();
return text;
}
トップページに を するコード:

${plainText}

${plainText?substring(0,50) + '......'}
#if>

8、 :
, “ ”, 404 ;

bindURL

9、 :
, , 。

freemarker “!” article.content
${(article.content)!" "}10、 :ページスタイルのコントロール?ソリューション:ラベルにstyleプロパティを で する
11、 : 、スライド をクリックして、4 の は3 しか できなくて、1 が る があります:jsをロードする 、スライド をクリックして、onclick は2 して、だから ある1 の の を ることができます:jsファイルの で、unbind() でonclick のバインドを して、この が1 だけ することを します
12、 : の の
、 すると に されますが、エンタープライズ は されません. しないとページ が されません.
:
データベース のデータの .
13、 :htmlの でどのようにラベルのブロックの と す を します:htmlのページの で 1つのを します
14、 :htmlページで、ページの がカプセル されている 、ソリューション: なソリューションは、 ツールでページのhtmlコードをコピーし、カプセル されたコードを き え( にはclass を すればよい)、 に じて することです.
15、 :プロジェクトはローカルで でき、 にデータを する.しかし、プロジェクトがサーバに されると、データ に が し、 に されませんか? :htmlページ、Controller、Service でデータを する 、Stringタイプのデータをパラメータとして するべきではありません.そうしないと、パラメータが すぎる( えば、 すぎる をパラメータとして する) 、サーバが できなくなり、データの が しません.ソリューション:id を し、idをパラメータとしてデータを します.
16、 :プロジェクトをパッケージ する 、 ずredisの をテスト の に えることに して、 の を わないでください、もし していないならば、 のreidsの を うシステムにアクセスして、 にその のシステムにアクセスして、sessionはなくして、きっと します.
17、 :jsで をフォーマットする ? :jsでyyyy-MM-dd hh:mm:ssの をyyyy-MM-ddにフォーマットするには、 でformatメソッドを く があります:/**
*
*/
Date.prototype.format = function(fmt) {
var o = {
"M+" : this.getMonth()+1, //
"d+" : this.getDate(), //
"h+" : this.getHours(), //
"m+" : this.getMinutes(), //
"s+" : this.getSeconds(), //
"q+" : Math.floor((this.getMonth()+3)/3), //
"S" : this.getMilliseconds() //
};
if(/(y+)/.test(fmt)) {
fmt=fmt.replace(RegExp.$1
, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("("+ k +")").test(fmt)){
fmt = fmt.replace(RegExp.$1
, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
}
return fmt;
}
にこのメソッドを び します:var oldStartTime = (new Date(msg.data[i].startTime)).getTime();
var curStartTime = new Date(oldStartTime).format("yyyy-MM-dd");
18、 :htmlフォームページは のラジオを しますか? :nameプロパティは えません.
19、 :AngularJSがng-repeat で を する 、どのようにシーケンス を しますか? :{{$index + 1}}を します.
20、 :エラー:TypeError: Converting circular structure to JSON in nodejs : の をJSON.stringifyに えるとエラーが する.var a = { };
var b = { a: a };
a.b = b;
JSON.stringify(a);
のaとbは いに して するため、 としてオブジェクトはJSONに できない. :JSONに したいオブジェクトから を します.approvalTableを すると、vm.approvalTable = [{
"name": " ",
"operatTime": " ",
"attachmentList": [],
"fileUploader": fileOperationService.getUploader(),
"delApproval": function () {
var position = vm.approvalTable.indexOf(this);
vm.approvalTable.splice(position, 1)
}
}]
の「file Uploader」はファイルアップロードコンポーネントに な です.ただし、データが されている 、このプロパティが されないと、オブジェクトのループ が します.そのため、データを するときにこの を する があります.
21、 :ページは4つのドロップダウンボックスをロードし、ドロップダウンボックスの はコードテーブルから み され、 masterDataService.listParamConfigインタフェースを び してコードテーブルを み さなければならない.たとえば、// :
(function () {
var typeCode = "8137";
vm.moneyTypeList = masterDataService.listParamConfig({
paramCode: typeCode
});
})();
ですが、4つのドロップダウン・ボックスは 3つしか を み れず、 1つが み れません.つまり、masterDataService.listParamConfigインタフェースが び されたときに が します.では、whileループを1つ するだけで、 が れなければ を り し、 れば しません.しかし、whileの はどのように しますか?(function () {
var typeCode = "8137";
vm.moneyTypeList = masterDataService.listParamConfig({
paramCode: typeCode
});
while (?) {
vm.moneyTypeList = masterDataService.listParamConfig({
paramCode: typeCode
});
}
})();
ここでの は、 が されると、インタフェースはオブジェクトを し、オブジェクトに なコードテーブル が まれている 、オブジェクトはArray を む. に し、オブジェクトに なコードテーブル がない 、オブジェクトはundefinedでもnullでもなく、_proto_:Array(0)を むObjectです.これにより,そのオブジェクトがundefinedとnullであるか かを とすることはできない. :(function () {
var typeCode = "8137";
vm.moneyTypeList = masterDataService.listParamConfig({
paramCode: typeCode
});
while (Object.prototype.toString.call(vm.moneyTypeList).indexOf('Array') == -1) {
vm.moneyTypeList = masterDataService.listParamConfig({
paramCode: typeCode
});
}
})();
は、まず を し、そのオブジェクトを する.さらに、このオブジェクトにArray が まれているか かを し、Object.prototype.toString.call(vm.moneyTypeList).indexOf('Array') == -1でArray のオブジェクトにおけるインデックスを することができる:-1は を するのではなく、-1は しないことを し、 する.
22、 : の がもらえませんか. : コードは:// id
httpService.processHttp( (1)
approvalService.getApplicantNames,
creatorIdList,
function (applicantMap) {
for (var i = 0; i < data.length; i++) {
data[i].applicantName = applicantMap[data[i].creator].name;
}
});
vm.dataList = data; (2)
vm.itemList = vm.clone(data); (3)
の があり、 の(2)と(3)が(1)より に され、 のデータがdataListに されていないため、 の が されていない. :httpService.processHttp(
approvalService.getApplicantNames,
creatorIdList,
function (applicantMap) {
for (var i = 0; i < data.length; i++) {
data[i].applicantName = applicantMap[data[i].creator].name;
}
vm.dataList = data;
vm.itemList = vm.clone(data);
});
23、 :ユーザーが データを する ? :if (vm.project.projectName == undefined
|| vm.project.projectName == null
|| vm.project.projectName == '') {
notificationService.notice({
text : " ! "
}).warn();
return;
};